Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4973
Beiträge: 43258
Benutzer: 7.219
Aktive Benutzer: 81
Links: 84
Wir begrüßen unseren neuesten Benutzer: Hopfen&Malz
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einem Tag
- Hopfen&Mal...
vor 2 Tagen
- frankmicha...
vor einer Woche
- DFeck
vor einer Woche
- bb1107
vor 2 Wochen
- rg-trader

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 265
Gesamt: 265
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Like Tree6Likes
Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 05.02.15
Mitglied
 
Registriert seit: Jan 2015
Ort: Norddeutschland
Beiträge: 42
Nordlicht befindet sich auf einem aufstrebenden Ast
Standard 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.

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
  #2 (permalink)  
Alt 05.02.15
Mitglied
 
Registriert seit: Jan 2015
Ort: Norddeutschland
Beiträge: 42
Nordlicht befindet sich auf einem aufstrebenden Ast
Standard 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
  #3 (permalink)  
Alt 05.02.15
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

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
Nordlicht likes this.
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #4 (permalink)  
Alt 05.02.15
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

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 likes this.
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #5 (permalink)  
Alt 05.02.15
Mitglied
 
Registriert seit: Jan 2015
Ort: Norddeutschland
Beiträge: 42
Nordlicht befindet sich auf einem aufstrebenden Ast
Standard

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);
  }
//+------------------------------------------------------------------+ 
  #6 (permalink)  
Alt 05.02.15
Mitglied
 
Registriert seit: Jan 2015
Ort: Norddeutschland
Beiträge: 42
Nordlicht befindet sich auf einem aufstrebenden Ast
Standard

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

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.
  #7 (permalink)  
Alt 05.02.15
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

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 likes this.
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #8 (permalink)  
Alt 05.02.15
Mitglied
 
Registriert seit: Jan 2015
Ort: Norddeutschland
Beiträge: 42
Nordlicht befindet sich auf einem aufstrebenden Ast
Standard

Mit dem Preis?
  #9 (permalink)  
Alt 05.02.15
Mitglied
 
Registriert seit: Jan 2015
Ort: Norddeutschland
Beiträge: 42
Nordlicht befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von traderdoc Beitrag anzeigen
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?
  #10 (permalink)  
Alt 05.02.15
Mitglied
 
Registriert seit: Jan 2015
Ort: Norddeutschland
Beiträge: 42
Nordlicht befindet sich auf einem aufstrebenden Ast
Standard

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.

Thema geschlossen

Lesezeichen

Stichworte
mql4, programmierung, programmierung metatrader, stochastic, stochastic programmierung, stochastic signal

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +1. Es ist jetzt 17:29 Uhr.





Suchmaschine - Reisen - Wavesnode - Facebook Forum - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------