Jump to content
Tom Next - Daytrading Community

MT4 - indicator - Parabolic


mmsknecht

Recommended Posts

Hallo Zusammen,

 

der Indicator "Parabolic" zeigt in jeder Zeiteinheit auf dem Chart über und unter dem Kurs Signale. Ich kann leider kein mql! würde den Indicator allerdings gerne um eine Funktion erweitert haben.

Ist es möglich dass wenn der Indicator sein Signal wechselt, also z.B. von long auf short oder von short auf long, das dann ein akustisches Signal kommt z.B. für 1 Minute, egal in welcher Zeiteinheit?

 


bullet_go.png

//+------------------------------------------------------------------+
//|                                                    Parabolic.mq4 |
//|                      Copyright © 2004, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Lime
//---- input parameters
extern double    Step=0.02;
extern double    Maximum=0.2;
//---- buffers
double SarBuffer[];
//----
int    save_lastreverse;
bool   save_dirlong;
double save_start;
double save_last_high;
double save_last_low;
double save_ep;
double save_sar;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
 {
//---- indicators
  SetIndexStyle(0,DRAW_ARROW);
  SetIndexArrow(0,159);
  SetIndexBuffer(0,SarBuffer);
//----
  return(0);
 }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void SaveLastReverse(int last,int dir,double start,double low,double high,double ep,double sar)
 {
  save_lastreverse=last;
  save_dirlong=dir;
  save_start=start;
  save_last_low=low;
  save_last_high=high;
  save_ep=ep;
  save_sar=sar;
 }
//+------------------------------------------------------------------+
//| Parabolic Sell And Reverse system                                |
//+------------------------------------------------------------------+
int start()
 {
  static bool first=true;
  bool   dirlong;
  double start,last_high,last_low;
  double ep,sar,price_low,price_high,price;
  int    i,counted_bars=IndicatorCounted();
//----
  if(Bars<3) return(0);
//---- initial settings
  i=Bars-2;
  if(counted_bars==0 || first)
    {
     first=false;
     dirlong=true;
     start=Step;
     last_high=-10000000.0;
     last_low=10000000.0;
     while(i>0)
       {
        save_lastreverse=i;
        price_low=Low[i];
        if(last_low>price_low)   last_low=price_low;
        price_high=High[i];
        if(last_high<price_high) last_high=price_high;
        if(price_high>High[i+1] && price_low>Low[i+1]) break;
        if(price_high<High[i+1] && price_low<Low[i+1]) { dirlong=false; break; }
        i--;
       }
     //---- initial zero
     int k=i;
     while(k<Bars)
       {
        SarBuffer[k]=0.0;
        k++;
       }
     //---- check further
     if(dirlong) { SarBuffer[i]=Low[i+1]; ep=High[i]; }
     else        { SarBuffer[i]=High[i+1]; ep=Low[i]; }
     i--;
    }
   else
    {
     i=save_lastreverse;
     start=save_start;
     dirlong=save_dirlong;
     last_high=save_last_high;
     last_low=save_last_low;
     ep=save_ep;
     sar=save_sar;
    }
//----
  while(i>=0)
    {
     price_low=Low[i];
     price_high=High[i];
     //--- check for reverse
     if(dirlong && price_low<SarBuffer[i+1])
       {
        SaveLastReverse(i,true,start,price_low,last_high,ep,sar);
        start=Step; dirlong=false;
        ep=price_low;  last_low=price_low;
        SarBuffer[i]=last_high;
        i--;
        continue;
       }
     if(!dirlong && price_high>SarBuffer[i+1])
       {
        SaveLastReverse(i,false,start,last_low,price_high,ep,sar);
        start=Step; dirlong=true;
        ep=price_high; last_high=price_high;
        SarBuffer[i]=last_low;
        i--;
        continue;
       }
     //---
     price=SarBuffer[i+1];
     sar=price+start*(ep-price);
     if(dirlong)
       {
        if(ep<price_high && (start+Step)<=Maximum) start+=Step;
        if(price_high<High[i+1] && i==Bars-2)  sar=SarBuffer[i+1];

        price=Low[i+1];
        if(sar>price) sar=price;
        price=Low[i+2];
        if(sar>price) sar=price;
        if(sar>price_low)
          {
           SaveLastReverse(i,true,start,price_low,last_high,ep,sar);
           start=Step; dirlong=false; ep=price_low;
           last_low=price_low;
           SarBuffer[i]=last_high;
           i--;
           continue;
          }
        if(ep<price_high) { last_high=price_high; ep=price_high; }
       }
     else
       {
        if(ep>price_low && (start+Step)<=Maximum) start+=Step;
        if(price_low<Low[i+1] && i==Bars-2)  sar=SarBuffer[i+1];

        price=High[i+1];
        if(sar<price) sar=price;
        price=High[i+2];
        if(sar<price) sar=price;
        if(sar<price_high)
          {
           SaveLastReverse(i,false,start,last_low,price_high,ep,sar);
           start=Step; dirlong=true; ep=price_high;
           last_high=price_high;
           SarBuffer[i]=last_low;
           i--;
           continue;
          }
        if(ep>price_low) { last_low=price_low; ep=price_low; }
       }
     SarBuffer[i]=sar;
     i--;
    }
//   sar=SarBuffer[0];
//   price=iSAR(NULL,0,Step,Maximum,0);
//   if(sar!=price) Print("custom=",sar,"   SAR=",price,"   counted=",counted_bars);
//   if(sar==price) Print("custom=",sar,"   SAR=",price,"   counted=",counted_bars);
//----
  return(0);
 }
//+------------------------------------------------------------------+

 

Vielen Dank vorab für die Hilfe

Link to comment
Share on other sites

Ist es möglich dass wenn der Indicator sein Signal wechselt, also z.B. von long auf short oder von short auf long, das dann ein akustisches Signal kommt z.B. für 1 Minute, egal in welcher Zeiteinheit?

Möglich auf jeden Fall. Ich bin mir nicht sicher ob es innerhalb des Indis möglich ist, oder ob es nicht besser wäre ein Skript zu schreiben, welches den Wert des Indi checkt.

 

Ich glaub ich hab auch noch nicht ganz verstanden was du genau willst, ein Dauerton für 1 Minute?!? oder einfach ein akustisches Signal? Mit PlaySound(filename) kannst du einen beliebigen Sound aus dem sounds-directory abspielen...

Link to comment
Share on other sites

sieht gut aus WOGO danke dafür,

 

bei den extern double Step ist der Wert auf "Step=0.05;" und der extern double Maximum auf "Maximum=0.3;"

 

den Parabolic den MT mitliefert, gibt er "Step=0.02;" und "Maximum=0.2;" vor.

 

Hat das einen Grund?

 

Kann man das optische Signal auf dem Chart größer darstellen, so wie im Original MT Parabolic?

Link to comment
Share on other sites

bei den extern double Step ist der Wert auf "Step=0.05;" und der extern double Maximum auf "Maximum=0.3;"

 

den Parabolic den MT mitliefert, gibt er "Step=0.02;" und "Maximum=0.2;" vor.

 

Hat das einen Grund?

 

 

In erster Linie liegt das daran, dass nicht jeder die gleichen Indikatoreinstellungen benutzt.

 

 

Kann man das optische Signal auf dem Chart größer darstellen, so wie im Original MT Parabolic?

 

Du kannst in den Indikatoreneinstellungen sowohl die Stepgröße (Input) als auch das optische Signal -> Einstellung Farben (Weite) verändern.

Link to comment
Share on other sites

In erster Linie liegt das daran, dass nicht jeder die gleichen Indikatoreinstellungen benutzt.

 

also hast du die Einstellungen nicht vorgenommen?

 

 

Du kannst in den Indikatoreneinstellungen sowohl die Stepgröße (Input) als auch das optische Signal -> Einstellung Farben (Weite) verändern.

 

farbe kann ich bei "#property indicator_color1" einstellen, aber wo finde ich die größe mit der das Signal im Chart abgebildet wird?

 

#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Lime
//---- input parameters
extern double    Step=0.02;
extern double    Maximum=0.2;
//---- buffers
double SarBuffer[];
//----
int    save_lastreverse;
bool   save_dirlong;
double save_start;
double save_last_high;
double save_last_low;
double save_ep;
double save_sar;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0,159);
   SetIndexBuffer(0,SarBuffer);
//----
   return(0);

danke dir

Link to comment
Share on other sites

farbe kann ich bei "#property indicator_color1" einstellen, aber wo finde ich die größe mit der das Signal im Chart abgebildet wird?

 

 

Zwischen den Zeilen:

#property indicator_color1 Lime und

//---- input parameters

 

#property indicator_width1 3

 

das rot markierte einfügen,

dann Kompilieren, abspeichern usw.

 

Einstellung der Größe des Signalpunkts wäre in diesem Beispiel dann 3, kannst du ändern von 1 bis 5

 

(versuch`s mal, bin kein Programmierer und habe da keinen Plan, bei mir geht es aber so bei diesem Indikator)

  • Upvote 3
Link to comment
Share on other sites

hat geklappt Vola,

 

//|                       Modified to give audible alarm on reversal |
//|                                       Modified by Jim Arner, Sr. |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red
#property indicator_width1 5
//---- input parameters
extern double    Step=0.02;
extern double    Maximum=0.2;
//---- buffers
double SarBuffer[];
//----
int    save_lastreverse;
bool   save_dirlong, save_dirshort;
double save_start;
double save_last_high;

ich versuche gerade einen Order Befehl zu integrieren, kann allerdings auch kein mql!


Wenn er von shot auf long wechselt oder von long auf short, entsprechend einen trade einzugehen.

An welche Stelle muss der Befehl? Er muss ja den vorgänger Trade auch schließen.

 

 OrderSend(Symbol(), OP_SELL, Lots[LotsPosition], Bid, 0, 0.0, 0.0, "", MAGIC);
Link to comment
Share on other sites

ich versuche gerade einen Order Befehl zu integrieren, kann allerdings auch kein mql!

Nein, das funktioniert nicht. Du hast hier einen Indikator. Aus einem Indikator kann man keine Order-Befehle ausgeben.

Dafür brauchst du einen EA. Von da aus kannst du dann diesen Indikator aufrufen.

Da muss man aber einiges beachten, das nicht in einem Post zu erklären ist.

Link to comment
Share on other sites

Da müssen dann andere ran, dass wird bei mir nichts - wir wollen doch nicht, dass das Rote Telefon wegen Vola klingelt http://1.1.1.2/bmi/www.tom-next.com/community//public/style_emoticons/default/laugh.png

! :-)

 

 

Nein, das funktioniert nicht. Du hast hier einen Indikator. Aus einem Indikator kann man keine Order-Befehle ausgeben.

Dafür brauchst du einen EA. Von da aus kannst du dann diesen Indikator aufrufen.

Da muss man aber einiges beachten, das nicht in einem Post zu erklären ist.

 

Also, dann lasst uns doch einen EA programmieren ;-)

Link to comment
Share on other sites

Also, dann lasst uns doch einen EA programmieren ;-)

 

Hallo MMS

 

vielleicht eröffnest Du einen/Deinen Thread "MMSKnechts erster EA" und beginnst dort ? Ich (Wir) werden Dich gerne begleiten , vermutlich die meisten Coder haben irgendwie so mal angefangen .

Du hast programmiererfahrung ... nur MQL ist Dir neu , ja ?

 

KB

  • Upvote 3
Link to comment
Share on other sites

  • 2 weeks later...

so ich hoffe ihr habt Weihnachten auch gut rumgebracht.

 

Das mit dem Thread werde ich machen, wird allerdings der zweite EA werden.

 

Den ersten EA werde ich hier mal Posten, läuft mit MT4, mit dem konnte ich 2009 beim XTB-Wettbewerb den 6 Platz erzielen und 113,02% Rendite in 4 Wochen schaffen. Beim Wettbewerb standen 10.000€ Startkapital zur Verfügung und es durfte natürlich nicht manuell eingegriffen werden.

 

Es war ein Kamikaze Script und führt langfristig zum Total Verlust!!! Also so nicht im Livetrading verwenden!!!

 

Vielleicht dient er ja für Anregungen, oder jemand hat eine Idee zur Verbesserung!

bullet_go.png



//+------------------------------------------------------------------+
//|                                               EURUSD-catcher.mq4 |
//|                 Copyright © 2009, mmsknecht - www.metatrader5.de |
//|                                        http://www.metatrader5.de |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, mmsknecht - www.metatrader5.de"
#property link      "http://www.metatrader5.de"

#define  MAGIC    08042010

extern   int      OpenTimeMin =  5;
extern   int      CloseTimeMin =  55;

         bool     CheckedToday = FALSE;

        double Lots[] = {  0.1,
                           0.2,
                           0.3,
                           0.5,
                           0.8,
                           1.0,
                           1.5,
                           2.0,
                           2.5,
                           3.0,
                           4.0,
                           5.0,
                           7.0,
                           10.0,
                           };

                              
         int      LotsPosition = 0;


//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
{
   return(0);
}


//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
{
   return(0);
}


//+------------------------------------------------------------------+
//| Schließt zur angegebenen Uhrzeit alle Gewinn-Trades              |
//+------------------------------------------------------------------+
int close_all_positive()
{
   // Prüfe ob Uhrzeit erreicht ist
   if (TimeHour(TimeCurrent()) >= CloseTimeMin)
 
   {
      // Prüfe ob es geöffnete Positionen gibt
      if (OrdersTotal() > 0)
      {
         // Prüfe ob Equity > Balance
         if (AccountEquity() > AccountBalance())
         {
            // Gehe jede Position durch und schließe sie
            for (int j=OrdersTotal()-1;j>=0;j--)
            {
               // Order auswählen
               OrderSelect(j, SELECT_BY_POS, MODE_TRADES);
               
               // Je nach Order-Art (BUY / SELL) zum aktuellen Bid oder Ask-Preis schließen
               if (OrderType() == OP_BUY)
                  OrderClose(OrderTicket(),OrderLots(), Bid, 0);
               else
                  OrderClose(OrderTicket(),OrderLots(), Ask, 0);
            }
            LotsPosition = 0;
         }
      }
   }
   return(0);
}

//+------------------------------------------------------------------+
//| Prüft Bedingung für das Öffnen neuer Order                       |
//+------------------------------------------------------------------+
int check_for_open()
{
   // Prüfe ob neue Stunde begonnen hat
   if (TimeHour(TimeCurrent()) > OpenTimeMin)
   {
      CheckedToday = FALSE;
   }

   // Prüfe auf Öffnungs-Kondition
   if (CheckedToday)
   {
      return(-1);
   }
   else // !CheckedToday
   {
      if (TimeHour(TimeCurrent()) == OpenTimeMin)
      {
         if (LotsPosition < ArraySize(Lots))
     
         {
            OrderSend(Symbol(), OP_SELL, Lots[LotsPosition], Bid, 0, 0.0, 0.0, "", MAGIC);
            Print("Tick: "+Volume[0]);
            LotsPosition++;
            CheckedToday = TRUE;
         }
      }
   }

   return(0);
}

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{
   check_for_open();
   close_all_positive();
   return(0);
}
  • Upvote 3
Link to comment
Share on other sites

Naja, so richtig sauber ist der EA nicht:

 

1. du gehst nur Short

2. es werden offensichtlich Minutenangaben als Input genommen aber mit der Stunde der Uhrzeit verglichen. Dadurch werden die Positionen nie geschlossen (zumindest nicht mit 55 als Inputparameter für CloseTimeMin

3. "CheckedToday" wird immer wieder zurückgesetzt, wenn der Zeitpunkt erreicht ist. Das heißt: von 6 Uhr bis 24 Uhr.

 

Was ist denn die Strategie dahinter? Ich habe den EA nicht ausprobiert (nur Quellcode gelesen), aber für mich sieht es so aus, als würde ab 6 Uhr in Folge der nächsten 14 Ticks Shortpositionen eröffnet, die nie geschlossen werden (weil Stunde 55 als Uhrzeit nicht erreicht wird).

  • Upvote 1
Link to comment
Share on other sites

  • Ob long oder short wäre nicht relevant. Würde auch mit long gehen.
  • Der Programmierer wollte das so lösen, dass alle Stunde und 5 Minuten die neue Position geöffnet wird, wenn alle Stunde und 55 Minuten die Equity größer als die Balance ist.
  • „CheckedToday“!? Sollte eigentlich durchgehend Handeln von 0-24!
Du hast recht: „if TimeHour(TimeCurrent()) >= CloseTimeMin)“ wird nicht erreicht, das ist falsch, es müsste „if TimeMinute(TimeCurrent()) >=CloseTimeMin)“ heißen. Ich hänge den Original Code nochmal dran, da wurde rumgeschraubt, dass hab ich gar nicht gesehen!

 

Die Idee war damals:

 

Jede Stunde einen Trade short einzugehen (Egal wo der Kurs gerade ist) und jede Stunde zu prüfen ob die Equity größer ist als die Balance.

 

Sollte die Equity größer sein als die Balance, alle Trades verkaufen ob im plus oder im Minus egal, da ja in der Summe im Plus.

 

Sollte die Balance größer sein als die Equity wurde nachgekauft und die lots entsprechend der Liste (double Lots[] = {0.1, 0.2, 0.3 usw.}) erhöht.

 

Bei einer Korrektur im Markt laufen die dadurch weit oben eingekauften Trades schneller ins Plus.

 

War allerdings langfristig ein K.O System!!!

 

bullet_go.png


//+------------------------------------------------------------------+
//|                                               EURUSD-catcher.mq4 |
//|                 Copyright © 2009, mmsknecht - www.metatrader5.de |
//|                                        http://www.metatrader5.de |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, mmsknecht - www.metatrader5.de"
#property link      "http://www.metatrader5.de"

#define  MAGIC    08042010

extern   int      OpenTimeMin =  5;
extern   int      CloseTimeMin =  55;

         bool     CheckedToday = FALSE;

        double Lots[] = {  0.1,
                           0.2,
                           0.3,
                           0.5,
                           0.8,
                           1.0,
                           1.5,
                           2.0,
                           2.5,
                           3.0,
                           4.0,
                           5.0,
                           7.0,
                           10.0
                           };

                              
         int      LotsPosition = 0;


//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
{
   return(0);
}


//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
{
   return(0);
}


//+------------------------------------------------------------------+
//| Schließt zur angegebenen Uhrzeit alle Gewinn-Trades              |
//+------------------------------------------------------------------+
int close_all_positive()
{
   // Prüfe ob Uhrzeit erreicht ist
   if (TimeMinute(TimeCurrent()) >= CloseTimeMin)
   {
      // Prüfe ob es geöffnete Positionen gibt
      if (OrdersTotal() > 0)
      {
         // Prüfe ob Equity > Balance
         if (AccountEquity() > AccountBalance())
         {
            // Gehe jede Position durch und schließe sie
            for (int j=OrdersTotal()-1;j>=0;j--)
            {
               // Order auswählen
               OrderSelect(j, SELECT_BY_POS, MODE_TRADES);
               
               // Je nach Order-Art (BUY / SELL) zum aktuellen Bid oder Ask-Preis schließen
               if (OrderType() == OP_BUY)
                  OrderClose(OrderTicket(),OrderLots(), Bid, 0);
               else
                  OrderClose(OrderTicket(),OrderLots(), Ask, 0);
            }
            LotsPosition = 0;
         }
      }
   }
   return(0);
}

//+------------------------------------------------------------------+
//| Prüft Bedingung für das Öffnen neuer Order                       |
//+------------------------------------------------------------------+
int check_for_open()
{
   // Prüfe ob neue Stunde begonnen hat
   if (TimeMinute(TimeCurrent()) > OpenTimeMin)
   {
      CheckedToday = FALSE;
   }

   // Prüfe auf Öffnungs-Kondition
   if (CheckedToday)
   {
      return(-1);
   }
   else // !CheckedToday
   {
      if (TimeMinute(TimeCurrent()) == OpenTimeMin)
      {
         if (LotsPosition < ArraySize(Lots))
         {
            OrderSend(Symbol(), OP_SELL, Lots[LotsPosition], Bid, 0, 0.0, 0.0, "", MAGIC);
            Print("Tick: "+Volume[0]);
            LotsPosition++;
            CheckedToday = TRUE;
         }
      }
   }

   return(0);
}

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{
   check_for_open();
   close_all_positive();
   return(0);
}
Edited by Mythos
wieso wurde der EA zweimal gepostet?
Link to comment
Share on other sites

auch mir fehlt ein Handelssystem/-logik dafür macht mir der Array Lots[] Angst ...und zwar richtig . Da ist SEHR viel Munition drinne, aber dass wirst Du sicher gesehen haben , nicht wahr . Vergleiche dazu auch Deinen Post #12 ,darin Deine letzte Frage . Es scheint sich um denselben EA zu handeln .

 

Was meinst Du mit

 

Das mit dem Thread werde ich machen, wird allerdings der zweite EA werden.

 

Den ersten EA werde ich hier mal Posten, läuft mit MT4, mit dem konnte ich 2009 beim XTB-Wettbewerb den 6 Platz erzielen und 113,02% Rendite in 4 Wochen schaffen. Beim Wettbewerb standen 10.000€ Startkapital zur Verfügung und es durfte natürlich nicht manuell eingegriffen werden.

 

Es war ein Kamikaze Script und führt langfristig zum Total Verlust!!! Also so nicht im Livetrading verwenden!!!

 

Der "erste EA" stammt wohl nicht von Dir, denn Du schreibst ja weiter oben, dass Du kein MQL coden kannst, so durfte ich Dich doch verstehen ? Dann macht es hier keinen Sinn , meine Meinung , andere EA´s zu vertiefen , höchstens um die Gefahren deutlich zu machen . Hast Du dann ja leider erleben müssen .

 

Ich warte jetzt ab, bis Du mit Deinem 2. EA , einem eigenen MMS-EA (am besten basierend auf einem anderem Basis-EA) beginnst und unterstütze dann ggfs gerne weiter .

 

KB

 

PS.: Basis-EA zum Beispiel hier

 

EDIT 20:16 als Nachsatz, da Du gleichzeitig den Post #19 darüber geschrieben hast . Noch ein Beispiel .... der Code oben eröffnet keine BuyOrder, nirgendwo . Wieso soll er dann eine OP_Buy behandeln? Screene mal alle "Ordersend()"-Befehle durch . Weiter ... es handelt sich um ein 10K Konto , alle Order werden als Sell bis hin zu einem Trade mit einer Power von 10 LOT ( !!!! ) eröffnet .

  • Upvote 1
Link to comment
Share on other sites

Erstmal freue ich mich über die Aktivität und das Teilen von EAs und Ideen. Zugegebenermaßen bin ich aber ein bissl "schockiert" das dieser EA mit diesen offensichtlichen Problemen Platz 6 gemacht hat. Zeigt wie sinnvoll solche Championships sind. Aber du hast ja selber schon geschrieben das der EA im Livebetrieb zum Totalverlust führt.
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...