Hatalar, hatalar, sorular - sayfa 3076

 
Vladimir Karputov # :

İlk soru: Bu kodu kendiniz mi yazdınız ve değişkenlere böyle isimler mi verdiniz?

Evet.

 
Yury Lemeshev # :

Evet.

Çok garip isimler - bir kod çözücüye benziyor. Lütfen diğer kodlarınızı daha fazla gösterin - kendi yazdığınız kodlar.

 
Vladimir Karputov # :

Çok garip isimler - bir kod çözücüye benziyor. Lütfen diğer kodlarınızı daha fazla gösterin - kendi yazdığınız kodlar.

 int intLevelOrderProfit()
   {
   int iLOP,iL;
   ProfitCycle= GlobalVariableGet ( "[" +MAGICs+ "] Profit Cycle" );
   iL= GlobalVariableGet ( "[" +MAGICs+ "] Level Orders" )- 1 ;
   ArrayResize (LOP, GlobalVariableGet ( "[" +MAGICs+ "] Level Orders" )- 1 );
   int LOPc;LOPc= 0 ;
   for (i= 0 ; i< GlobalVariablesTotal (); i++)
      {
       if ( StringFind ( GlobalVariableName (i), "[" +MAGICs+ "] Level Order #" )!=- 1 )
         {
         iLOP= GlobalVariableGet ( GlobalVariableName (i));
         if (iLOP< GlobalVariableGet ( "[" +MAGICs+ "] Level Orders" ))
            {
             /*MT5*/ if ( PositionSelectByTicket ( StringSubstr ( GlobalVariableName (i),( 2 + StringFind ( GlobalVariableName (i), " #" , 0 ))))== true )
             ///*MT4*/if(OrderSelect(StringSubstr(GlobalVariableName(i),(2+StringFind(GlobalVariableName(i)," #",0))),SELECT_BY_TICKET,MODE_TRADES)==true)
               {
               LOPc++;
               ArrayFill (LOP,(iLOP- 1 )* 5 + 0 , 1 ,MAGICs);
               /*MT5*/ ArrayFill (LOP,(iLOP- 1 )* 5 + 1 , 1 ,LOP[iLOP- 1 ][ 1 ]+ PositionGetDouble ( POSITION_PROFIT )+ PositionGetDouble ( POSITION_SWAP ));
               ///*MT4*/ArrayFill(LOP,(iLOP-1)*5+1,1,LOP[iLOP-1][1]+OrderProfit()+OrderSwap()+OrderCommission());
               if (LOPc== 1 ){ ArrayFill (LOP,((iLOP- 1 )* 5 )+ 3 , 1 , StringSubstr ( GlobalVariableName (i),( 2 + StringFind ( GlobalVariableName (i), " #" , 0 ))));}
               if (LOPc== 2 ){ ArrayFill (LOP,((iLOP- 1 )* 5 )+ 4 , 1 , StringSubstr ( GlobalVariableName (i),( 2 + StringFind ( GlobalVariableName (i), " #" , 0 ))));}
               if (LOPc== 2 ){LOPc= 0 ;}
               }
            }
         }
      }
   if ( ArraySize (LOP)> 0 )
      {
       int iLOPP;
      iLOPP=Profit;
       if (CloseLevelOrders==ECLO2){iLOPP=Profit*( GlobalVariableGet ( "[" +MAGICs+ "] Level Orders" ));}
       for (i= 0 ; i< ArraySize (LOP)/ 5 ; i++)
         {
         if ( NormalizeDouble (LOP[i][ 0 ], 0 )==MAGICs)
            {
             if ((-LOP[i][ 1 ])<(-iLOPP* 2 ) && (-LOP[i][ 1 ])<(-LOP[i][ 2 ]* 2 ))
               { ArrayFill (LOP,(i* 5 )+ 2 , 1 ,(LOP[i][ 1 ])/ 2 );}
             if (LOP[i][ 1 ]>iLOPP && LOP[i][ 1 ]<=LOP[i][ 2 ])
               {
               if (LOP[i][ 3 ]> 0 )
                  {
                  ticket=LOP[i][ 3 ]; Print ( "-673- Closing by profit " +(LOP[i][ 2 ])+ " ticket " +ticket);intClosePosition();CloseMode= "CloseOneMagic" ;intDeleteGlobalVariables(); GlobalVariableSet ( "[" +MAGICs+ "] Profit Cycle" ,LOP[i][ 2 ]/ 2 +ProfitCycle);
                  }
               if (LOP[i][ 4 ]> 0 )
                  {
                  ticket=LOP[i][ 4 ]; Print ( "-677- Closing by profit " +(LOP[i][ 2 ])+ " ticket " +ticket);intClosePosition();CloseMode= "CloseOneMagic" ;intDeleteGlobalVariables(); GlobalVariableSet ( "[" +MAGICs+ "] Profit Cycle" ,LOP[i][ 2 ]/ 2 +ProfitCycle);
                  }
               GlobalVariableSet ( "[" +MAGICs+ "] INDEX" , GlobalVariableGet ( "[" +MAGICs+ "] INDEX" )/DeMultiplicationVoltage); //Edition 26082021
               ArrayFill (LOP,(i* 5 )+ 2 , 1 , 0 );
               }
            }
         ArrayFill (LOP,(i* 5 )+ 0 , 1 , 0 );
         ArrayFill (LOP,(i* 5 )+ 1 , 1 , 0 );
         ArrayFill (LOP,(i* 5 )+ 3 , 1 , 0 );
         ArrayFill (LOP,(i* 5 )+ 4 , 1 , 0 );
         }
      }
   return ( 0 );
   }
 
Vladimir Karputov # :

Çok garip isimler - bir kod çözücüye benziyor. Lütfen diğer kodlarınızı daha fazla gösterin - kendi yazdığınız kodlar.

Expert Advisor'da her şeyi fonksiyonlara göre ayırıyorum, iFunctionExample(), bu fonksiyonların içinde int için iFE1, iFE2, iFE3, double d FE1, d FE2, d FE3 için değişkenler var. Neyin geldiğini anlamak benim için daha kolay.

 
Yury Lemeshev # :

Expert Advisor'da her şeyi fonksiyonlara göre ayırıyorum, iFunctionExample(), bu fonksiyonların içinde int için iFE1, iFE2, iFE3, double d FE1, d FE2, d FE3 için değişkenler var. Neyin geldiğini anlamak benim için daha kolay.

TAMAM. Açıklama için ve kodu doğru bir şekilde girmeye başladığınız için teşekkür ederiz.

 
Yury Lemeshev # :

Aynı anda iki veya daha fazla siparişle çalışıyorum. Ağ. Koşullu giriş noktasının altındaki veya üstündeki fiyatı kontrol ederim. Koşullu giriş noktaları başlangıçta bir dizideydi, şimdi küresellerde.

Ve sayıların bir ikamesi olduğu ortaya çıktı, ama Tanrı ikameyi kutsasın. Keşke karşılaştırma doğru olsaydı. Ama değişim aynı zamanda sorunlu.

SymbolInfoBid(name,SYMBOL_BID) 0 veya EMPTY_VALUE döndürebildiğine rastladım, doğruluğunu kontrol etmekte fayda var

ancak if (A>B && BA<0) ikili karşılaştırması oldukça komiktir: "B, 'den büyük mü? ve böyle olsa bile ??"

yine de bir günlük kullanmaktan korkmayın - gerçekte neler olduğunu görmek için değişkenlerinizi yazdırın

PS/ tabi ki değişkenlerin isimleri kötü .. böyle bir kodu nasıl okuyup yazıyorsunuz :-) ve en önemlisi unutmayın

 
Maxim Kuznetsov # :

SymbolInfoBid(name,SYMBOL_BID) 0 veya EMPTY_VALUE döndürebildiğine rastladım, doğruluğunu kontrol etmekte fayda var

ancak if (A>B && BA<0) ikili karşılaştırması oldukça komiktir: "B, 'den büyük mü? ve böyle olsa bile ??"

yine de bir günlük kullanmaktan korkmayın - gerçekte neler olduğunu görmek için değişkenlerinizi yazdırın

PS/ tabi ki değişkenlerin isimleri kötü .. böyle bir kodu nasıl okuyup yazıyorsunuz :-) ve en önemlisi unutmayın

Bu hatanın bariz olması gereken yere bir Expert Advisor yazacağım, yoksa bununla karşılaşmayacağım. Daha sonra tekrar yazacağım.

BA<0 ek kontrol, böylece fonksiyona girmez, ancak bu kontrolü atlayan diğer karakterlerden veri alınır.

 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
#property version   "1.00"
#property strict
#property script_show_inputs

input int                        Magic                      =100;
input double                     Volume                     =0.01;
input bool                       EURUSD                     =true;
input bool                       EURGBP                     =true;
input bool                       GBPUSD                     =true;
input double                     Grid                       =0.5;
extern int                       Slippage                   =5;   

int i,type,ticket,MagiX;
double price;
string symbol,iOrderComment;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
   {
   return(INIT_SUCCEEDED);  
   }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
   {
   }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int iGridCreate()
   {
   double dGC1;
   dGC1=SymbolInfoDouble(symbol,SYMBOL_BID);
   for(i=0; i<25; i++)
      {GlobalVariableSet(symbol+" BUY "+(1001+i),NormalizeDouble(dGC1=dGC1-(dGC1/100*Grid),SymbolInfoInteger(symbol,SYMBOL_DIGITS)));}
   dGC1=SymbolInfoDouble(symbol,SYMBOL_BID);
   for(i=0; i<25; i++)
      {GlobalVariableSet(symbol+" SELL "+(1001+i),NormalizeDouble(dGC1=dGC1+(dGC1/100*Grid),SymbolInfoInteger(symbol,SYMBOL_DIGITS)));}
   return(0);
   }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int iMagic()
   {
   MagiX=Magic;
   return(0);
   }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int iGridOpen()
   {
   double dGO1;
   string sGO1;
   for(i=0; i<GlobalVariablesTotal(); i++)
      {
      sGO1=GlobalVariableName(i);
      symbol=StringSubstr(sGO1,0,StringFind(sGO1," ",0));
      dGO1=SymbolInfoDouble(symbol,SYMBOL_BID);
      if(StringFind(sGO1,"BUY",0)!=-1)
         {
         if(dGO1<GlobalVariableGet(sGO1))
            {
            type=0;
            iOrderComment=dGO1+"<"+GlobalVariableGet(sGO1);
            intOpenPosition();
            GlobalVariableDel(sGO1);
            }
         }
      if(StringFind(sGO1,"SELL",0)!=-1)
         {
         if(dGO1>GlobalVariableGet(sGO1))
            {
            type=1;
            iOrderComment=dGO1+">"+GlobalVariableGet(sGO1);
            intOpenPosition();
            GlobalVariableDel(sGO1);
            }
         }
      }
   return(0);
   }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int intOpenPosition()
   {
   MqlTradeRequest TradeRequest={}; MqlTradeResult TradeResult={};
   ZeroMemory(TradeRequest);ZeroMemory(TradeResult);
   TradeRequest.action=TRADE_ACTION_DEAL;
   TradeRequest.symbol=symbol;
   TradeRequest.volume=Volume;
   TradeRequest.type=type;
   if(type==0){price=SymbolInfoDouble(symbol,SYMBOL_ASK);}
   if(type==1){price=SymbolInfoDouble(symbol,SYMBOL_BID);}
   TradeRequest.price=price;
   TradeRequest.deviation=Slippage;
   TradeRequest.magic=MagiX;
   TradeRequest.comment=iOrderComment;
   if(!OrderSend(TradeRequest,TradeResult)){Print("110");intOpenPosition();}
   else{ticket=TradeResult.deal;}
   return(0);
   }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
   {
   iMagic();
   iGridOpen();
   if(EURUSD==true)
      {
      symbol="EURUSD";
      SymbolSelect(symbol,true);
      if(GlobalVariablesTotal()==0){iGridCreate();}
      for(i=0; i<GlobalVariablesTotal(); i++)
         {
         if(StringFind(GlobalVariableName(i),symbol,0)!=-1){break;}
         }
      if(i==GlobalVariablesTotal()){iGridCreate();}
      }
   if(EURGBP==true)
      {
      symbol="EURGBP";
      SymbolSelect(symbol,true);
      if(GlobalVariablesTotal()==0){iGridCreate();}
      for(i=0; i<GlobalVariablesTotal(); i++)
         {
         if(StringFind(GlobalVariableName(i),symbol,0)!=-1){break;}
         }
      if(i==GlobalVariablesTotal()){iGridCreate();}
      }
   if(GBPUSD==true)
      {
      symbol="GBPUSD";
      SymbolSelect(symbol,true);
      if(GlobalVariablesTotal()==0){iGridCreate();}
      for(i=0; i<GlobalVariablesTotal(); i++)
         {
         if(StringFind(GlobalVariableName(i),symbol,0)!=-1){break;}
         }
      if(i==GlobalVariablesTotal()){iGridCreate();}
      }
   }
 

6,7,8 numaralı biletler verilerini almadı. Yanlış bir şey yazarsam, neyin yanlış olduğunu söylerseniz minnettar olurum. Ancak birçok değişiklik denedi ve hata devam ediyor.

MT5 test cihazındaki sorunu görselleştirme modunda gözlemliyorum.

Dosyalar:
bhshrzc2g7.png  27 kb
 

Bir sorunu çözmeye çalışıyorum.

Aşağıdakileri fark etti:

Test cihazında herhangi bir günlük yazmayı bırakırlar . Ve bu anda bir başarısızlık meydana gelir, metamatik çöker.

2020.08.17 06:12:21 EURGBP 0.90496

2020.08.17 06:12:21 EURGBP AL 0.90496

2020.08.17 06:47:12 GBPUSD 1.3098

2020.08.17 06:47:12 GBPUSD 1.3098 SATIN AL

Tam 6:34:15'te açılmaması gereken bir işlem açılışı var.

Lütfen test cihazındaki kodumu kontrol edin. Bana öyle geliyor ki, en son güncellemelerden sonra test cihazı düzgün çalışmıyor.


Dosyalar:
du8ozf0qs9.png  67 kb