Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   Brauche Hilfe Stochastic (http://www.expert-advisor.com/forum/showthread.php?t=4060)

Nordlicht 05.02.15 11:07

Brauche Hilfe Stochastic
 
Moin zusammen,

ich versuche seit geraumer Zeit meinen Take Profit mit den Stochastic Signalen mit zu nehmen.

Leider ohne jeglichen Erfolg.:(

Habe schon so viel gelesen und probiert. Habe da einen riesigen Logik Fehler. Sollte mich vielleicht von Nordlicht auf Dummlicht umtaufen. :mad:

Kann mir jemand auf die Sprünge helfen? (schnief)

Code:

      //TakeProfit Long - Stoch
     
        if(MAkurz>(iStochastic(NULL,0, 8, 3, 3, MODE_SMA, 0, MODE_SIGNAL, 1)>80))
        //if((iStochastic(NULL,0,8,3,3,MODE_SMA,0,MODE_LOW,0)>=80) > (iStochastic(NULL,0,8,3,3,MODE_SMA,0,MODE_LOW,1)))//iStochastic(NULL,0,5,3,3,MODE_SMA,1,MODE_LOW,0))return(0);
            { 
              if(OrderSelect(LongOrder,SELECT_BY_TICKET)==true)
              {
                  if(OrderCloseTime()==0 && OrderStopLoss()==0)
       
                  {
                        LongOrderGeclosed = OrderClose(LongOrder,OrderLots(),Ask,10,Blue);
                        if (LongOrderGeclosed==true) LongOrder=0;
                    }
            }
        }

Wäre echt dankbar

Nordlicht 05.02.15 12:09

Geht auch nicht
 
Habe das mal wieder anders gemacht, 0Errors/0Warnings - aber das Programm macht es nicht so wie ich es will. Eigentlich wird es vollkommen ignoriert.

1. In die Daten mit aufgenommen:

Code:

      double StochSchliessenLongK = iStochastic(NULL,0, 8, 3, 3, MODE_SMA, 0, MODE_MAIN,1);
      double StochSchliessenLongD = iStochastic(NULL,0, 8, 3, 3, MODE_SMA, 0, MODE_SIGNAL,1);
      double StochSchliessenShortK = iStochastic(NULL,0, 8, 3, 3, MODE_SMA, 0, MODE_MAIN,1);
      double StochSchliessenShortD = iStochastic(NULL,0, 8, 3, 3, MODE_SMA, 0, MODE_SIGNAL,1);

2. Den Code geändert:

Code:

    if(StochSchliessenLongK > StochSchliessenLongD)
              {
                  if(StochSchliessenLongK > 80.0)
                  {
                    if(OrderSelect(LongOrder,SELECT_BY_TICKET)==true)
                    {
                        if(OrderCloseTime()==0 && OrderStopLoss()==0)
       
                            {
                              LongOrderGeclosed = OrderClose(LongOrder,OrderLots(),Ask,10,Blue);
                                if (LongOrderGeclosed==true) LongOrder=0;
                            }
                            }
                            }
                            }

Erfolg = NULL

Son Mist

traderdoc 05.02.15 12:46

Ein Fehler steckte in der ersten Zeile des ersten Codes:

Code:

      //TakeProfit Long - Stoch
     
        if(MAkurz>iStochastic(NULL,0, 8, 3, 3, MODE_SMA, 0, MODE_SIGNAL, 1) && iStochastic(NULL,0,8,3,3, MODE_SMA, 0, MODE_SIGNAL, 0) > 80))
        //if((iStochastic(NULL,0,8,3,3,MODE_SMA,0,MODE_LOW,0)>=80) > (iStochastic(NULL,0,8,3,3,MODE_SMA,0,MODE_LOW,1)))//iStochastic(NULL,0,5,3,3,MODE_SMA,1,MODE_LOW,0))return(0);
            { 
              if(OrderSelect(LongOrder,SELECT_BY_TICKET)==true)
              {
                  if(OrderCloseTime()==0 && OrderStopLoss()==0)
       
                  {
                        LongOrderGeclosed = OrderClose(LongOrder,OrderLots(),Ask,10,Blue);
                        if (LongOrderGeclosed==true) LongOrder=0;
                    }
            }
        }

traderdoc

traderdoc 05.02.15 12:49

Sorry, ich kann gerade mein letztes Post nicht bearbeiten!
In der gerade korrigierten Zeile, müßte beim Indikator hinten als Shift eine 1 stehen und keine 0.

traderdoc

Nordlicht 05.02.15 13:52

Vielen Dank für Deine Mühe Traderdoc, ehrlich!

Funktioniert aber nicht. Habe da bestimmt im Code einen Bock. So viel gelesen, aber immer noch am Anfang.

Habe den ganzen Code mal reingestellt. Ausgangsbasis ist von MindfulFX.

Habe da aber schon ganz schön rum gefurcht.

PHP-Code:

//+------------------------------------------------------------------+
//|                                                   Dirk Rohmann   |
//|                                                   copyright 2015 |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Dirk Rohmann"
#property link      ""

//Globale Externe Variablen
extern int  MA_lang 17;
extern int  MA_kurz 1;
extern int  MA_Mittel 26;
extern double HandelsLots 0.01,SL_prozent 0.25TP_prozent 0.50;
extern int MagicNummer 12345;
extern int LongOrder,ShortOrder;



//Globale Variablen
datetime PeriodenStartZeit;
bool NeuePeriodeBegonnen,LongSignal,ShortSignal;

 

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----



//----
   
return(0);

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

/////////////////////////////////////////////////////////////////////////////////////////////////
//---------------------------Überprüfen ob neuer Periodenbeginn vorliegt-----------------------//
/////////////////////////////////////////////////////////////////////////////////////////////////

      
if(PeriodenStartZeit != Time[0])
         {
            
NeuePeriodeBegonnen true;
            
PeriodenStartZeit Time[0];
         }
      else 
NeuePeriodeBegonnen false;
      
      
////////////////////////////////////////////////////////////////////////////////////////////////      
//-------------------------------------Marktdaten ermitteln-----------------------------------//
////////////////////////////////////////////////////////////////////////////////////////////////

      
double MAlang iMA(NULL,0,MA_lang,0,MODE_SMA,PRICE_CLOSE,1);
      
double MAlangVorperiode iMA(NULL,0,MA_lang,0,MODE_SMA,PRICE_CLOSE,2);
      
double MAkurz iMA(NULL,0,MA_kurz,0,MODE_SMA,PRICE_CLOSE,1);
      
double MAkurzVorperiode iMA(NULL,0,MA_kurz,0,MODE_SMA,PRICE_CLOSE,2);
      
double MAmittel iMA(NULL,0,MA_Mittel,0,MODE_SMA,PRICE_CLOSE,1);
      
double MAmittelVorperiode iMA(NULL,0,MA_Mittel,0,MODE_SMA,PRICE_CLOSE,2);    
      
double StochSchliessenLongK iStochastic(NULL,0833MODE_SMA0MODE_MAIN,1);
      
double StochSchliessenLongD iStochastic(NULL,0833MODE_SMA0MODE_SIGNAL,1);
      
double StochSchliessenShortK iStochastic(NULL,0833MODE_SMA0MODE_MAIN,1);
      
double StochSchliessenShortD iStochastic(NULL,0833MODE_SMA0MODE_SIGNAL,1);

      

      
/////////////////////////////////////////////////////////////////////////////////////////////////
//------------------------------------Handelssignale ermitteln---------------------------------//
/////////////////////////////////////////////////////////////////////////////////////////////////

      
if(NeuePeriodeBegonnen == true)
         {

            
//Buy Signal
            
if(MAkurz>MAlang && MAkurzVorperiode<=MAlangVorperiode)
               {
                  
LongSignal true;
               }
            else 
LongSignal =false;
            
            
            
//Sell Signal
            
if(MAkurz<MAlang && MAkurzVorperiode>=MAlangVorperiode)
               {
                  
ShortSignal true;
               }
            else 
ShortSignal false;
         }
      else
         {
            
LongSignal =false;
            
ShortSignal false;
         }
      

/////////////////////////////////////////////////////////////////////////////////////////////////
//-------------------------------------Long Signale umsetzen-----------------------------------//
/////////////////////////////////////////////////////////////////////////////////////////////////


      
if(LongSignal == true)
         {
            
//Evtl. Short Order schließen
            
if(ShortOrder>0)
               {
                  if(
OrderSelect(ShortOrder,SELECT_BY_TICKET)==true)
                     {
                        
bool ShortOrderGeclosed OrderClose(ShortOrder,OrderLots(),Ask,10,Blue);
                        if (
ShortOrderGeclosed==trueShortOrder=0;
                     }
               }
            
//Long Order eröffnen
            
while(LongOrder<=0)
               {
                  
LongOrder OrderSend(Symbol(),OP_BUY,HandelsLots,Ask,10,0,0,"MAXing LONG",MagicNummer,0,Green);
               }
         }
         
         


/////////////////////////////////////////////////////////////////////////////////////////////////
//------------------------------------Short Signale umsetzen-----------------------------------//
/////////////////////////////////////////////////////////////////////////////////////////////////


      
if(ShortSignal == true)
         {
            
//Evtl. Long Order schließen
            
if(LongOrder>0)
               {
                  if(
OrderSelect(LongOrder,SELECT_BY_TICKET)==true)
                     {
                        
bool LongOrderGeclosed OrderClose(LongOrder,OrderLots(),Bid,10,Blue);
                        if (
LongOrderGeclosed==trueLongOrder=0;
                     }
               }
            
//Short Order eröffnen
            
while(ShortOrder<=0)
               {
                  
ShortOrder OrderSend(Symbol(),OP_SELL,HandelsLots,Bid,10,0,0,"MAXing SHORT",MagicNummer,0,Red);
               }
         }
              
//////////////////////////////////////////////////////////////////////////////////////////////////
//---------------------------------------Stopp Loss nach MA-------------------------------------//
//////////////////////////////////////////////////////////////////////////////////////////////////


      
//////////////////////////////////////////////////////////////////////////////////////////////////
//--------------------------------------Stopp Loss nach Pips------------------------------------//
//////////////////////////////////////////////////////////////////////////////////////////////////
      
      //SL Long Deals Setzen
      
if(OrderSelect(LongOrder,SELECT_BY_TICKET)==true)
         {
            if(
OrderCloseTime()==&& OrderStopLoss()==0)
               {
                  
double StoppLossNormalizeDouble(OrderOpenPrice()/(1+(SL_prozent/100)),Digits);
                  
bool OrderAngepasst OrderModify(OrderTicket(),OrderOpenPrice(),StoppLoss,OrderTakeProfit(),0,Yellow);
               }
         }
      
//SL Short Deals Setzen
      
if(OrderSelect(ShortOrder,SELECT_BY_TICKET)==true)
         {
            if(
OrderCloseTime()==&& OrderStopLoss()==0)
               {
                  
StoppLossNormalizeDouble(OrderOpenPrice()*(1+(SL_prozent/100)),Digits);
                  
OrderAngepasst OrderModify(OrderTicket(),OrderOpenPrice(),StoppLoss,OrderTakeProfit(),0,Yellow);
               }
         }

//////////////////////////////////////////////////////////////////////////////////////////////////
//-------------------------------Take Profit nach Stochastic setzen-----------------------------//
//////////////////////////////////////////////////////////////////////////////////////////////////


      //TakeProfit Long - Stoch
      
         
if((iStochastic(NULL,0833MODE_SMA0MODE_SIGNAL1) && iStochastic(NULL,0,8,3,3MODE_SMA0MODE_SIGNAL1) > 80))
        
//if((iStochastic(NULL,0,8,3,3,MODE_SMA,0,MODE_LOW,0)>=80) > (iStochastic(NULL,0,8,3,3,MODE_SMA,0,MODE_LOW,1)))//iStochastic(NULL,0,5,3,3,MODE_SMA,1,MODE_LOW,0))return(0);
            
{   
               if(
OrderSelect(LongOrder,SELECT_BY_TICKET)==true)
               {
                  if(
OrderCloseTime()==&& OrderStopLoss()==0)
         
                   {
                        
LongOrderGeclosed OrderClose(LongOrder,OrderLots(),Ask,10,Blue);
                        if (
LongOrderGeclosed==trueLongOrder=0;
                     }
             }
         }


         if((
iStochastic(NULL,0833MODE_SMA0MODE_SIGNAL1) && iStochastic(NULL,0,8,3,3MODE_SMA0MODE_SIGNAL1) < 20))
        
//if((iStochastic(NULL,0,8,3,3,MODE_SMA,0,MODE_LOW,0)>=80) > (iStochastic(NULL,0,8,3,3,MODE_SMA,0,MODE_LOW,1)))//iStochastic(NULL,0,5,3,3,MODE_SMA,1,MODE_LOW,0))return(0);
            
{   
               if(
OrderSelect(ShortOrder,SELECT_BY_TICKET)==true)
               {
                  if(
OrderCloseTime()==&& OrderStopLoss()==0)
         
                   {
                        
ShortOrderGeclosed OrderClose(ShortOrder,OrderLots(),Ask,10,Blue);
                        if (
ShortOrderGeclosed==trueShortOrder=0;
                     }
             }
         }


      
//TakeProfit Long - Stoch
      
         //if(MAkurz>(iStochastic(NULL,0, 8, 3, 3, MODE_SMA, 0, MODE_SIGNAL, 1)>80))
        //if((iStochastic(NULL,0,8,3,3,MODE_SMA,0,MODE_LOW,0)>=80) > (iStochastic(NULL,0,8,3,3,MODE_SMA,0,MODE_LOW,1)))//iStochastic(NULL,0,5,3,3,MODE_SMA,1,MODE_LOW,0))return(0);
//            {   
  //             if(OrderSelect(LongOrder,SELECT_BY_TICKET)==true)
    //           {
      //            if(OrderCloseTime()==0 && OrderStopLoss()==0)
         
        //           {
          //              LongOrderGeclosed = OrderClose(LongOrder,OrderLots(),Ask,10,Blue);
            //            if (LongOrderGeclosed==true) LongOrder=0;
              //       }
             //}
         //}          
        
      //TP Short Deals Setzen
      
//      if(MAkurz<(iStochastic(NULL, Period(), 8, 3, 3, MODE_SMA, 0, MODE_SIGNAL, 1)<20))
      //  if(iStochastic(NULL,0,8,3,3,MODE_SMA,0,MODE_LOW,1)<=10)//iStochastic(NULL,0,5,3,3,MODE_SMA,1,MODE_LOW,0))return(0);
  //       {
    //        if(ShortOrder>0)
      //         {
        //          if(OrderSelect(ShortOrder,SELECT_BY_TICKET)==true)
          //           {
            //            ShortOrderGeclosed = OrderClose(ShortOrder,OrderLots(),Bid,10,Blue);
              //          if (ShortOrderGeclosed==true) ShortOrder=0;
                //     }
               //}
         //}          
 

//////////////////////////////////////////////////////////////////////////////////////////////////
//-----------------------------------Aufträge rücksetzen----------------------------------------//
//////////////////////////////////////////////////////////////////////////////////////////////////

      
      //Ticketnummern nach Closing auf 0 zurücksetzen
      
      
if(OrderSelect(LongOrder,SELECT_BY_TICKET)==true)
         {
            if(
OrderTicket()>&& OrderCloseTime()>0LongOrder=0;
         }
      if(
OrderSelect(ShortOrder,SELECT_BY_TICKET)==true)
         {
            if(
OrderTicket()>&& OrderCloseTime()>0ShortOrder=0;
         }     
      

//----
   
return(0);
  }
//+------------------------------------------------------------------+ 


Nordlicht 05.02.15 14:17

Nee - Kommando zurück. Der läuft doch! :D

Herzlichen Dank.

Hatte mir davon nur mehr versprochen, weil ich gerne am obersten/bzw. untersten Ende die Gewinne mitnehmen wollte.

Der Stoch ist jedoch so schnell unten, dass er die Trades abwürgt. Es eigentlich noch schlimmer macht.

Elender Seitwärtshandel!!!!

Als Daytrader arbeite ich, nach dem Einstieg, mit der intraday Fibo. Wenn man da erst mal die Orientierung hat, dann geht das ganz gut.

Bzgl. Fibo habe ich aber noch Garnichts in mql4 gefunden.

traderdoc 05.02.15 14:26

Nun fehlt der Vergleich:
if((iStochastic(NULL,0, 8, 3, 3, MODE_SMA, 0, MODE_SIGNAL, 1) && iStochastic(NULL,0,8,3,3, MODE_SMA, 0, MODE_SIGNAL, 1) > 80))

Also insgesamt gibt es da eine Menge Baustellen, die zur Nichtfunktion beitragen könnten. Aber solche wie oben geschrieben dürfen natürlich auch nicht vorkommen.

traderdoc

Nordlicht 05.02.15 14:50

Mit dem Preis?

Nordlicht 05.02.15 15:02

Zitat:

Zitat von traderdoc (Beitrag 28571)
Nun fehlt der Vergleich:
if((iStochastic(NULL,0, 8, 3, 3, MODE_SMA, 0, MODE_SIGNAL, 1) && iStochastic(NULL,0,8,3,3, MODE_SMA, 0, MODE_SIGNAL, 1) > 80))

Also insgesamt gibt es da eine Menge Baustellen, die zur Nichtfunktion beitragen könnten. Aber solche wie oben geschrieben dürfen natürlich auch nicht vorkommen.

traderdoc

Der Code, den Du richtig gestellt hast:

Code:

        if((iStochastic(NULL,0, 8, 3, 7, MODE_SMA, 0, MODE_MAIN, 1)
          && iStochastic(NULL,0,8,3,7, MODE_SMA, 0, MODE_SIGNAL, 1) < 20))

Sagt doch eigentlich aus:

Wenn "K" unter 20 ist && "D" auch dann "{}" tue das. Oder interpretiere ich das nicht richtig?

Nordlicht 05.02.15 15:09

Habs kapiert Hihi. Und geht jetzt viel besser.

Habe mir das was ich geschrieben habe mal angeschaut und gesehen wo der Vergleich fehlte. Jetzt ist es richtig und macht auch das was ich mir erhofft hatte.

Man do, echt vielen Dank.

Bzgl. der Baustellen werde ich das mal überarbeiten. Für einen "echten" Code werde ich dann aber mal Deine Dienste in Anspruch nehmen.

Zunächst aller herzlichsten Dank.

:)

traderdoc 05.02.15 15:16

Ja, meistens sind es immer nur "Kleinigkeiten", die einen verzweifeln lassen.
Deshalb empfehle ich jeden, an bestimmten Stellen des Codes Alert()-Funktionen einzubauen, mit einem spezifischen Text. Dann erkennt man relativ leicht, wo das Programm hinläuft oder eben nicht. Dann kann man die möglichen Fehlerquellen einengen, bis man halt genau die Stelle hat, wo die Säge klemmt.

Viel Erfolg!

traderdoc

Nordlicht 18.02.15 10:40

Bedingungen
 
Hallo zusammen!

Möchte den Code erweitern.

Wenn der Stoch z.B. unten war, also z.B. unter 20, soll er nichts machen, sondern erst wenn er dreht und rauskommt, z.B. 21 einen Long eingehen.

Ich habe zwei "If" Bedingungen hintereinander gestellt. Das funktioniert aber nicht, weil er nun wohl auf die Erfüllung beider Bedingungen wartet.

Es soll aber erst die eine erfüllt werden, um dann die zweite zu nehmen.

Also irgendwas zwischen den beiden "If" Anweisungen fehlt. Bloß was?

PHP-Code:

      if(NeuePeriodeBegonnen == true)
         {
            
//Buy Signal Stoch 
            
if((((iStochastic(NULL,0,K_PeriodeD_PeriodeVerlangsMODE_SMA0MODE_MAIN0) > 80) && iStochastic(NULL,0,K_PeriodeD_PeriodeVerlangsMODE_SMA0MODE_SIGNAL0) > 80)))
                  {
                   if((((
iStochastic(NULL,0,K_PeriodeD_PeriodeVerlangsMODE_SMA0MODE_MAIN0) < 79) && iStochastic(NULL,0,K_PeriodeD_PeriodeVerlangsMODE_SMA0MODE_SIGNAL0) < 79)))
               {
                  
LongSignal true;
               }
               }
            else 
LongSignal =false

Vielen Dank für Eure Antworten :)

Nordlicht 18.02.15 11:30

Habe es mit Datetime versucht. Funktioniert aber nicht und spielt Irre.

PHP-Code:

         {
            
//Buy Signal Stoch 
            
if((((iStochastic(NULL,0,K_PeriodeD_PeriodeVerlangsMODE_SMA0MODE_MAIN0) > 80) && iStochastic(NULL,0,K_PeriodeD_PeriodeVerlangsMODE_SMA0MODE_SIGNAL0) > 80)))
                  {
                     
datetime SignalZeit=TimeCurrent();
                  }
                  if(
SignalZeit!=EMPTY_VALUE)
                  {
                   if((((
iStochastic(NULL,0,K_PeriodeD_PeriodeVerlangsMODE_SMA0MODE_MAIN0) < 79) && iStochastic(NULL,0,K_PeriodeD_PeriodeVerlangsMODE_SMA0MODE_SIGNAL0) < 79)))
               
SignalZeit=EMPTY_VALUE;
               {
               
                  
LongSignal true;
               }
               } 


Nordlicht 19.02.15 18:33

Nach gefühlten 100.000 Versuchen!

So geht es dann auch, wenn es dann passt.

PHP-Code:

         
            
//Sell Signal Stoch  
            
if(((((iStochastic(NULL,0,K_PeriodeD_PeriodeVerlangsMODE_SMA0MODE_MAIN0) < 79) && iStochastic(NULL,0,K_PeriodeD_PeriodeVerlangsMODE_SMA0MODE_SIGNAL0) < 79)) && iStochastic(NULL,0,K_PeriodeD_PeriodeVerlangsMODE_SMA0MODE_MAIN2) > 80)) 
                 
// { 
                   //  datetime SignalZeit=TimeCurrent(); 
  //                } 
    //              if(SignalZeit!=EMPTY_VALUE) 
      //            { 
        //           if((((iStochastic(NULL,0,K_Periode, D_Periode, Verlangs, MODE_SMA, 0, MODE_MAIN, 0) > 79) && iStochastic(NULL,0,K_Periode, D_Periode, Verlangs, MODE_SMA, 0, MODE_SIGNAL, 0) > 79))) 
          //     SignalZeit=EMPTY_VALUE; 
               

                
                  
ShortSignal true
               } 
               
            else 
ShortSignal =false;
           
           
            
//By Signal Stoch
            
if(((((iStochastic(NULL,0,K_PeriodeD_PeriodeVerlangsMODE_SMA0MODE_MAIN0) > 21) && iStochastic(NULL,0,K_PeriodeD_PeriodeVerlangsMODE_SMA0MODE_SIGNAL0) > 21) && iStochastic(NULL,0,K_PeriodeD_PeriodeVerlangsMODE_SMA0MODE_MAIN2) < 20))) 
        
//          { 
          //           SignalZeit=TimeCurrent(); 
            //      } 
              //    if(SignalZeit!=EMPTY_VALUE) 
                //  { 
                  // if((((iStochastic(NULL,0,K_Periode, D_Periode, Verlangs, MODE_SMA, 0, MODE_MAIN, 0) < 21) && iStochastic(NULL,0,K_Periode, D_Periode, Verlangs, MODE_SMA, 0, MODE_SIGNAL, 0) < 21))) 
            //   SignalZeit=EMPTY_VALUE; 
               

                
                  
LongSignal true
               } 

Bringt bloß leider überhaupt nichts, wenn nicht Range ist.

RRRRRRRRRR - Verzweifel :mad:

traderdoc 20.02.15 15:53

Nun, da sollten wir erst einmal klären, ob das Triggersignal auf der letzten geschlossenen Kerze liegen soll oder auf der aktuellen Kerze? D.h. soll bei einem Kerzenwechsel der Close-Kurs der letzten geschlossenen Kerze betrachtet werden, der dann unter 80 oder über 20 liegen soll oder soll eben das Signal kommen, sobald der Kurs der aktuellen Kerze unter 80 oder über 20 liegt?

traderdoc

Nordlicht 20.02.15 17:37

Moin mein lieber!

Hatte im stillen ein wenig die Hoffnung, dass Du dich meldest.

Das Signal sollte eigentlich kommen, sobald der Kurs die 21 überschreitet, bzw. die 79 unterschreitet.

Mir ist es jedoch nicht gelungen, die Bewegung unter 20 bzw. über 80, als Bedingung zu "verankern", die erfüllt sein muss, um dann über 21 bzw. unter 79 ein Signal zu erhalten.

Deswegen dieser Umweg über Perioden. Der dann auch noch direkt passen muss.

Eigentlich soll es egal sein, wie viel Kerzen (Perioden) zwischen z.B. unter 20 und über 21 entstehen.

traderdoc 20.02.15 23:35

Bin auf Dienstreise und könnte den Code nicht! testen.
Bei Kerzenwechsel wird die MAIN-Linie auf Kerze 2 und 1 ausgelesen und bei Verlassen der 80er bzw 20er Linie das Signal generiert, welche dann noch in der Ordersetzung umgesetzt werden muß.

Code:

//an entsprechender Stelle LongSignal und ShortSignal mit bool deklarieren und auf false setzen. Und datetime OldTime; deklarieren.
if (Time[0] != OldTime) {
  if(iStochastic(NULL,0,K_Periode, D_Periode, Verlangs, MODE_SMA, 0, MODE_MAIN, 2) >= 80) && iStochastic(NULL,0,K_Periode, D_Periode, Verlangs, MODE_SMA, 0, MODE_MAIN, 1) < 80) {
      LongSignal = true;
  }
  if(iStochastic(NULL,0,K_Periode, D_Periode, Verlangs, MODE_SMA, 0, MODE_MAIN, 2) <= 20 && iStochastic(NULL,0,K_Periode, D_Periode, Verlangs, MODE_SMA, 0, MODE_MAIN, 1) > 20) {
      ShortSignal = true;
  }
  OldTime = Time[0];
}
if (LongSignal) {
  int ticket = OrderSend(...);
  if (ticket > 0) LongSignal = false;
}
if (ShortSignal) {
  int ticket = OrderSend(...);
  if (ticket > 0) ShortSignal = false;
}

Viel Erfolg!

traderdoc

Nordlicht 21.02.15 01:39

P E R F E K T !!

Vielen Dank, läuft gut.

Noch viel Erfolg auf der Geschäftsreise.

Gruß


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:20 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum