Biraz yardım gerekli

 

Diğer bazı EA'lardan ve indis'ten gelen kod yardımıyla kendi stratejime dayalı bir EA kodlamaya çalışıyorum. ama şimdi bir şeye takıldım.

(user defined lot sizes for each trade)

extern string LotsProgression= "0.1;0.1;0.2;0.3;0.4;0.6;0.8;1.1;1.5;2.0;2.7;3.6;4.7;6.2;8.0;10.2;13.0;16.5;20.8;26.3;33.1;41.6;52.2;65.5;82.5;103.9;130.9;165;207.9;262;330.1;416;524.7;661.1" ;

extern bool RestartNewCycle = true ;

(and the code)

int init()

{

int i,j,k;

string ls;

while ( true ) {

        j= StringFind (LotsProgression, ";" ,i);

         if (j> 0 ) {

                ls= StringSubstr (LotsProgression,i,j-i);

                i=j+ 1 ;

                k++;

                 ArrayResize (lots,k);

                lots[k- 1 ]= StrToDouble (ls);

        } else {

                ls= StringSubstr (LotsProgression,i);

                k++;

                 ArrayResize (lots,k);

                lots[k- 1 ]= StrToDouble (ls);

                 break ;

        }

}



plen= ArraySize (lots);

}

Bu mantığı ya da gerçekte ne olduğunu anlayamıyorum.

Not: Bir arkadaşım stratejimi beğendi ve bu EA'yı yarattı. Ama ikisini de kaybettim (EA ve kodlayıcı arkadaşımın irtibatı) bu yüzden şimdi çok temel kodlama bilgimi test etmeye çalışıyorum, çünkü bu Stratejinin tekrar kodlanmasını gerçekten istiyorum.

 
qgmql :

Diğer bazı EA'lardan ve indis'ten gelen kod yardımıyla kendi stratejime dayalı bir EA kodlamaya çalışıyorum. ama şimdi bir şeye takıldım.

<kaldırıldı>


Lütfen kodu göndermek için SRC düğmesini kullanın. . .
 
qgmql : Bu mantığı veya gerçekte ne olduğunu anlayamıyorum.

extern string LotsProgression="0.1;0.1;0.2; 0.3 ...

double lots [];     // [0]=0.1 [1]=0.1 [2]=0.2 [3]= 0.3 [34]=661.1
int    plen;       // 35
int init(){ ... }

Dizeyi noktalı virgüllere böler, alt dizeleri çiftlere dönüştürür ve değerleri dinamik dizide saklar .
 

Bahsettiğin şey tamam. sorun kodun geri kalanında. İki hata alıyorum (yalnızca yeni meta düzenleyicide).

'init' - function can be declared only in the global scope

and

'init' - function already defined and has body
 
qgmql :

Bahsettiğin şey tamam. sorun kodun geri kalanında. İki hata alıyorum (yalnızca yeni meta düzenleyicide).

init()'i başka bir işlevin içinde bildirmiş ve ardından ikinci kez tanımlamış gibisiniz. . .
 

evet anladım ve düzelttim Şimdi zaman çerçevesi kodunda hata alıyorum.

   //--- EA PARAMETERS
extern int       EA_TF= 240 ;
extern bool      Forced_TF= True ;


bool    TF;

     if (Forced_TF != True ) TF = EA_TF;     //These two lines i think, have error.
     else TF = Period ();                   //New metaeditor is not accepting "TF = EA_TF;" from above line.

Forced_TF doğruysa, EA ticaret yapmalı ve aktif grafik (EA'yı yerleştirdiğim) farklı bir zaman diliminde açılmış olsa bile, yalnızca belirtilen zaman diliminden sinyal almalıdır. Değer false ise, herhangi bir zaman diliminde çalışması gerekir.

 
qgmql :

evet anladım ve düzelttim Şimdi zaman çerçevesi kodunda hata alıyorum.

Forced_TF doğruysa, EA ticaret yapmalı ve aktif grafik (EA'yı yerleştirdiğim) farklı bir zaman diliminde açılmış olsa bile, yalnızca belirtilen zaman diliminden sinyal almalıdır. Değer false ise, herhangi bir zaman diliminde çalışması gerekir.

Bir bool olarak TF'niz var. .. ama onu bir int olarak ayarlamaya çalışıyorsunuz. . . bunu dene . . .

   //--- EA PARAMETERS
extern int       EA_TF= 240 ;
extern bool      Forced_TF= True ;


int    TF;

     if (!Forced_TF) TF = EA_TF;     //These two lines i think, have error. 
     else TF = Period ();             //New metaeditor is not accepting "TF = EA_TF;" from above line.
 
TÜM kodu gönderin veya en azından kesmeyi belirtin. IF/ELSE, bir işlevin içinde olmalıdır.
 

@RaptorUK seni yakaladım. ve yine eski editörde her şey yolunda, ancak yeni editör hala bir uyarı veriyor, hata satırından sonra kodda alıntı yapıyor,

 //+------------------------------------------------------------------+
//|                                                   01Multi_EA.mq4 |
//|                      Copyright © 2004, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link        "http://www.metaquotes.net/"
#property version    "1.00"
#property strict

//--- input parameters
input int       EA_TF= 60 ;
input bool      Forced_TF= True ;
input int       MagicNumber= 12345 ;
input int       FastMA_Period= 5 ;
input int       FastMA_Shift= 0 ;
input int       FastMA_Method= 1 ;
input int       FastMA_Price= 0 ;
input int       SlowMA_Period= 34 ;
input int       SlowMA_Shift= 0 ;
input int       SlowMA_Method= 1 ;
input int       SlowMA_Price= 0 ;
input string   LotsProgression="0.01;0.02;0.03;0.04;0.05;0.06;0.07;0.08;0.09;0.10;0.11;0.12;0.13;0.14;0.15;0.16;0.17;0.18;0.19;0.20";
input bool      NewCycle= True ;
input int       Limit_TP= 50 ;
input bool      Use_TP= False ;
input int       Limit_SL= 50 ;
input bool      Use_SL= False ;
input int       MaxSlippage= 3 ;
input int       OrderTries= 10 ;

int       TF, Plen;
double    TP, SL, pips2dbl, pips2point, pipValue, Slippage, Lots[];
         
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//----
 if (Forced_TF != True ) TF = EA_TF;
       else TF = Period ();
   int i,j,k;
   string ls;
   while ( true ) {
        j= StringFind (LotsProgression, ";" ,i);
         if (j> 0 ) {
                ls= StringSubstr (LotsProgression,i,j-i);    // <<<<<"possible use of uninitialized variable 'i'	01Multi_EA.mq4	46	38">>>>>

                i=j+ 1 ;
                k++;
                 ArrayResize (Lots,k);
                Lots[k- 1 ]= StrToDouble (ls);
        } else {
                ls= StringSubstr (LotsProgression,i);
                k++;
                 ArrayResize (Lots,k);
                Lots[k- 1 ]= StrToDouble (ls);
                 break ;
        }
   }


   Comment ( "Copyright © 2004, MetaQuotes Software Corp." );
   
   if ( Digits == 5 || Digits == 3 )
   {            
      pips2dbl = Point * 10 ; pips2point = 10 ; pipValue = ( MarketInfo ( Symbol (), MODE_TICKVALUE ))* 10 ;
   } 
   else 
   {    
      pips2dbl = Point ;   pips2point = 1 ; pipValue = ( MarketInfo ( Symbol (), MODE_TICKVALUE ))* 1 ;
   }
   
   Slippage = pips2dbl*MaxSlippage;
   TP = pips2dbl*Limit_TP;
   SL = pips2dbl*Limit_SL;
   
//----
   return ( INIT_SUCCEEDED );
  }

@WHRoeder Kodun tamamını yapıştırdı.

 
qgmql :

@RaptorUK seni yakaladım. ve yine eski editörde her şey yolunda, ancak yeni editör hala bir uyarı veriyor, hata satırından sonra kodda alıntı yapıyor,

@WHRoeder Kodun tamamını yapıştırdı.

Bu bir hata değil, bir uyarıdır. . . uyarıdan kurtulmak için değişkeni sadece bildirmek yerine ilklendirin. mql4'te bir değişken bildirdiğinizde o da başlatıldı, şimdi mql4.5 ile isterseniz değişkeni açıkça başlatmanız gerekiyor. . .

 int i = 0 , j, k;   //  i initialised to 0
 
pipValue = ( MarketInfo ( Symbol (), MODE_TICKVALUE ))* 10 ;
Onay değerini tek başına kullanmayın https://www.mql5.com/en/forum/133792/page3#512466