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.

:)


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:21 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