Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 236

 
Yaroslav Nykula:

... tutte le coppie di valute in cui è presente il dollaro...

Suppongo che ci sia un calcolo nel codice del margine usato dai fondi di trading - prova ad aprire un conto in una valuta diversa dal dollaro e vedi se il test passa.
 
<br / translate="no">

Presumo che ci sia un calcolo del margine usato dai fondi di trading nel codice - prova ad aprire un conto in qualcosa di diverso dal dollaro e vedi se il test passa.



Non c'è un calcolo del"margine utilizzato dai fondi di trading" nel codice ... e alla fine del mio primo post ho notato che "cambiare il tipo di valuta di deposito nel tester non risolve il problema".

 
Yaroslav Nykula:

Non c'è un calcolo del"margine utilizzato dai fondi di trading" nel codice ... e alla fine del mio primo post ho notato che "cambiare il tipo di valuta del deposito nel tester non risolve il problema".

Allora i miei poteri telepatici sono finiti - stendi il codice.

 

Scusa per la domanda, so come inserire un indicatore esterno in un EA usando un buffer... Ma non c'è alcun buffer in questo indicatore, come faccio a ottenere il prezzo superiore e inferiore.




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

//|                                                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:

Scusa per la domanda, so come inserire un indicatore esterno in un EA usando un buffer... In questo indicatore non c'è un buffer, come faccio a ottenere il prezzo superiore e inferiore


Prendere oggetti grafici sul grafico con i nomi "Trend DN-0", "Trend UP-0" (quelle linee che indicano alcuni livelli dell'indicatore) e leggere da esse i dati desiderati

 
Maxim Kuznetsov:

sul grafico prendere oggetti grafici con i nomi "Trend DN-0", "Trend UP-0" (quelle linee con cui l'indicatore segna alcuni livelli) e leggere i dati necessari da esse


per favore scrivi come fare questo nell'indicatore stesso? e poi fare 2 buffer da questi valori per usarli nell'EA?

Scrivere in quale luogo prendere il prezzo?

 
Vyacheslav Kornev:

per favore scrivi come fare questo nell'indicatore stesso? e poi fare 2 buffer da questi valori per usarli nell'EA?

scrivere in quale posto prendere il prezzo?

L'indicatore ha già tutti i dati per calcolare due buffer e disegnarli.

E tu non hai proposto di cambiare l'indicatore, ma di leggere i dati delle linee disegnate dall'indicatore dall'Expert Advisor.
Tuttavia, questo impone delle restrizioni sull'uso del tester - solo in modalità visiva potrai testare l'Expert Advisor.

 
Artyom Trishkin:

L'indicatore ha già tutti i dati per calcolare i due buffer e disegnarli.

E non ti è stato suggerito di cambiare l'indicatore, ma di leggere i dati delle linee disegnate dall'indicatore dall'Expert Advisor.
Tuttavia, questo impone delle limitazioni all'uso del tester - sarai in grado di testare l'Expert Advisor solo in modalità visiva.


Significa che dovrei scrivere nell'indicatore

#proprietà indicator_buffers 2

doppio BufferUp[], BufferDn[];


int OnInit()

{

SetIndexBuffer(0, BufferUp)

SetIndexBuffer(1, BufferDn)

}



E poi esattamente con cosa devo collegare questi 2 buffer?

 
Vyacheslav Kornev:

Quindi devo scrivere nell'indicatore

#proprietà indicator_buffers 2

doppio BufferUp[], BufferDn[];


int OnInit()

{

SetIndexBuffer(0, BufferUp)

SetIndexBuffer(1, BufferDn)

}



E poi esattamente con cosa devo collegare questi 2 buffer?

Guarda: hai delle linee che si muovono nel tuo codice:

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);

Time[st1], Time[st2] e il prezzo di questi punti di riferimento s1, s2 sono per una linea,
Time[rt1], Time[rt2], r1, r2 - per un'altra linea.

Usando l'equazione della linea puoi calcolare il valore del buffer per ogni barra tra questi punti e scrivere questo valore nel buffer.

 
Artyom Trishkin:

Vedi: hai linee che si muovono nel tuo codice:

Abbiamo Time[st1], Time[st2] e il prezzo di questi punti s1, s2 - per una linea,
Time[rt1], Time[rt2], r1, r2 - per un'altra linea.

Usando l'equazione della linea puoi calcolare il valore del buffer per ogni barra tra questi punti e scrivere questo valore nel buffer.


quindi non si può prendere il prezzo della linea sopra la barra... Non so come calcolare l'equazione della linea retta, se possibile, scrivete come dovrebbe essere il tutto.

E, in generale, il valore non dovrebbe essere preso tra i punti, ma sopra 0 o 1 bar