Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 236

 
Yaroslav Nykula:

... alle Währungspaare, in denen USD vorhanden ist ...

Ich nehme an, dass der Code eine Berechnung der Marge enthält, die von den Handelsfonds verwendet wird. Versuchen Sie, ein Konto in einer anderen Währung als USD zu eröffnen, und prüfen Sie, ob der Test erfolgreich ist.
 
<br / translate="no">

Ich gehe davon aus, dass es eine Berechnung der Marge aus dem Handel Fonds in den Code - versuchen Sie die Eröffnung eines Kontos in etwas anderes als USD und sehen, ob der Test besteht.



Der Kodex sieht keine Berechnung der"Einschusszahlungen aus Handelsfonds" vor ... und am Ende meines ersten Beitrags habe ich vermerkt: "Das Umschalten der Einzahlungswährungsansicht im Tester behebt das Problem nicht."

 
Yaroslav Nykula:

Der Kodex sieht keine Berechnung der"Einschusszahlungen aus Handelsfonds" vor ... und am Ende meines ersten Beitrags habe ich angemerkt, dass die Umstellung der Einzahlungswährung im Testprogramm das Problem nicht behebt".

Dann sind meine telepathischen Kräfte vorbei - legen Sie den Code fest.

 

Sorry für die Frage, ich weiß, wie man einen externen Indikator in einen EA mit einem Puffer einfügen... Aber es gibt keinen Puffer in diesem Indikator, wie bekomme ich den oberen und unteren Preis.




//+------------------------------------------------------------------+

//|                                                trendlinesDay.mq4 |

//|                      Copyright © 2008, MetaQuotes Software Corp. |

//|                                        https://www.metaquotes.net |

//+------------------------------------------------------------------+

#property copyright "nsi2000"

#property link      "http://www.expert-mt4.nm.ru"

//----

#property indicator_chart_window

//---- input parameters

extern int nPeriod=10;

extern int Limit=350;

   double Up[];

   double Dn[];

///---- int Widners Oscilator

int cnt,nCurBar=0;

//+------------------------------------------------------------------+

//| Custom indicator initialization function                         |

//+------------------------------------------------------------------+

int init()

  {      

//---- Output in Char

   for(cnt=0; cnt<=5; cnt++)

     {

      ObjectCreate("WSO-"+cnt,OBJ_HLINE,0,0,0);

      ObjectSet("WSO-"+cnt,OBJPROP_COLOR,Red);

      if(cnt<5)

        {

         ObjectCreate("Trend DN-"+cnt,OBJ_TREND,0,0,0,0,0);

         ObjectSet("Trend DN-"+cnt,OBJPROP_COLOR,Magenta);

        }

      //----

      ObjectCreate("WRO-"+cnt,OBJ_HLINE,0,0,0);

      ObjectSet("WRO-"+cnt,OBJPROP_COLOR,Blue);

      if(cnt<5)

        {

         ObjectCreate("Trend UP-"+cnt,OBJ_TREND,0,0,0,0,0);

         ObjectSet("Trend Up-"+cnt,OBJPROP_COLOR,Aqua);

        }

     }

//----

   return(0);

  }

//+------------------------------------------------------------------+

//| Custor indicator deinitialization function                       |

//+------------------------------------------------------------------+

int deinit()

  {

//---- TODO: add your code here

   for(cnt=0; cnt<=5; cnt++)

     {

      ObjectDelete("Trend UP-"+cnt);

      ObjectDelete("Trend DN-"+cnt);

      ObjectDelete("WSO-"+cnt);

      ObjectDelete("WRO-"+cnt);

     }

//----

   return(0);

  }

//+------------------------------------------------------------------+

//| Custom indicator iteration function                              |

//+------------------------------------------------------------------+

int start()

  {

//---- TODO: add your code here


   double r1,r2,r3,r4,r5,r6;

   int rt1,rt2,rt3,rt4,rt5,rt6;

   double s1,s2,s3,s4,s5,s6;

   int st1,st2,st3,st4,st5,st6;


//---- Линии сопротивления и поддержки

   if(Bars<Limit) Limit=Bars-nPeriod;

   for(nCurBar=Limit; nCurBar>0; nCurBar--)

     {

      if(Low[nCurBar+(nPeriod-1)/2]==Low[Lowest(NULL,0,MODE_LOW,nPeriod,nCurBar)])

        {

         s6=s5; s5=s4; s4=s3; s3=s2; s2=s1; s1=Low[nCurBar+(nPeriod-1)/2];

         st6=st5; st5=st4; st4=st3; st3=st2; st2=st1; st1=nCurBar+(nPeriod-1)/2;

        }

      if(High[nCurBar+(nPeriod-1)/2]==High[Highest(NULL,0,MODE_HIGH,nPeriod,nCurBar)])

        {

         r6=r5; r5=r4; r4=r3; r3=r2; r2=r1; r1=High[nCurBar+(nPeriod-1)/2];

         rt6=rt5; rt5=rt4; rt4=rt3; rt3=rt2; rt2=rt1; rt1=nCurBar+(nPeriod-1)/2;

        }

     }

//---- Move Object in Chart


   ObjectMove("Trend DN-0",1,Time[st1],s1);

   ObjectMove("Trend DN-0",0,Time[st2],s2);


//----

   ObjectMove("Trend UP-0",1,Time[rt1],r1);

   ObjectMove("Trend UP-0",0,Time[rt2],r2);

//----

   return(0);

  }

//+------------------------------------------------------------------+


 
Vyacheslav Kornev:

Sorry für die Frage, ich weiß, wie man einen externen Indikator in einen EA mit einem Puffer einfügen... In diesem Indikator gibt es keinen Puffer, wie kann ich den oberen und unteren Preis erhalten


Nehmen Sie grafische Objekte im Diagramm mit den Namen "Trend DN-0", "Trend UP-0" (die Linien, die einige Stufen des Indikators anzeigen) und lesen Sie die gewünschten Daten aus ihnen

 
Maxim Kuznetsov:

auf dem Diagramm die grafischen Objekte mit den Namen "Trend DN-0", "Trend UP-0" (die Linien, mit denen der Indikator einige Niveaus markiert) und lesen Sie die erforderlichen Daten aus ihnen


schreiben Sie bitte, wie dies in den Indikator selbst zu tun? und dann machen 2 Puffer aus diesen Werten, um sie in der EA verwenden?

An welchem Ort soll der Preis genommen werden?

 
Vyacheslav Kornev:

schreiben Sie bitte, wie dies in den Indikator selbst zu tun? und dann machen 2 Puffer aus diesen Werten, um sie in der EA verwenden?

schreiben, an welcher Stelle der Preis zu nehmen?

Der Indikator hat bereits alle Daten, um zwei Puffer zu berechnen und sie zu zeichnen.

Und Sie haben nicht vorgeschlagen, den Indikator zu ändern, sondern die Daten der vom Indikator gezeichneten Linien aus dem Expert Advisor zu lesen.
Dies führt jedoch zu Einschränkungen bei der Verwendung des Testers - nur im visuellen Modus können Sie den Expert Advisor testen.

 
Artyom Trishkin:

Der Indikator verfügt bereits über alle Daten, um die beiden Puffer zu berechnen und sie zu zeichnen.

Und man hat Ihnen nicht vorgeschlagen, den Indikator zu ändern, sondern die Daten der vom Indikator gezeichneten Linien aus dem Expert Advisor zu lesen.
Dies führt jedoch zu Einschränkungen bei der Verwendung des Testers - Sie können den Expert Advisor nur im visuellen Modus testen.


Das heißt, ich sollte in den Indikator schreiben

#Eigenschaft indicator_buffers 2

double BufferUp[], BufferDn[];


int OnInit()

{

SetIndexBuffer(0, BufferUp)

SetIndexPuffer(1, PufferDn)

}



Und womit genau muss ich dann diese 2 Puffer verbinden?

 
Vyacheslav Kornev:

Ich muss also in den Indikator schreiben

#Eigenschaft indicator_buffers 2

double BufferUp[], BufferDn[];


int OnInit()

{

SetIndexBuffer(0, BufferUp)

SetIndexPuffer(1, PufferDn)

}



Und womit genau muss ich dann diese 2 Puffer verbinden?

Sehen Sie: Sie haben Zeilen, die sich in Ihrem Code bewegen:

ObjectMove("Trend DN-0",1,Time[st1],s1);
ObjectMove("Trend DN-0",0,Time[st2],s2);
//----
ObjectMove("Trend UP-0",1,Time[rt1],r1);
ObjectMove("Trend UP-0",0,Time[rt2],r2);

Zeit[st1], Zeit[st2] und der Preis dieser Bezugspunkte s1, s2 gelten für eine Zeile,
Time[rt1], Time[rt2], r1, r2 - für eine weitere Zeile.

Mit Hilfe der Geradengleichung können Sie den Pufferwert für jeden Balken zwischen diesen Punkten berechnen und diesen Wert in den Puffer schreiben.

 
Artyom Trishkin:

Sehen Sie: Sie haben Zeilen, die sich in Ihrem Code bewegen:

Wir haben Time[st1], Time[st2] und den Preis dieser Punkte s1, s2 - für eine Zeile,
Time[rt1], Time[rt2], r1, r2 - für eine weitere Zeile.

Mit Hilfe der Geradengleichung können Sie den Pufferwert für jeden Balken zwischen diesen Punkten berechnen und diesen Wert in den Puffer schreiben.


Sie können also nicht einfach den Preis der Linie über die Latte nehmen... Ich weiß nicht, wie ich die Geradengleichung berechnen kann, wenn möglich, schreiben Sie, wie das Ganze aussehen soll.

Und im Allgemeinen sollte der Wert nicht zwischen Punkten, sondern über 0 oder 1 bar genommen werden

Grund der Beschwerde: