Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 811

 

Burada bekleyen emirler vermeniz ve fiyatlarını önceki çubuğun kapanış fiyatına göre hesaplamanız gerekir. BUYSTOP bahisleri ve SELLSTOP 130 hatasını döndürür. Bu kodda bir hata mı var? Veya başka bir işleve bakın.

geçersiz SetOrder() {

çift ldStop=0, ldTake=0;
int spr=MarketInfo(Symbol(), MODE_SPREAD);
double PredBar=iClose(NULL,PERIOD_M5,1);
double pAsk=PredBar+(DistanceSet+spr)*Nokta;
double pBid=PredBar-(DistanceSet+spr)*Nokta;

if (!ExistOrder(1)) {
if (StopLoss!=0) ldStop=pAsk-StopLoss*Point;
if (Kar Al!=0) ldTake=pAsk+Kar Al*Puan;
SetOrder(OP_BUYSTOP, pAsk, ldStop, ldTake, 1);
}
if (!ExistOrder(2)) {
if (StopLoss!=0) ldStop=PredBar+(StopLoss*Nokta);
if (TakeProfit!=0) ldTake=pBid-TakeProfit*Puan;
SetOrder(OP_SELLSTOP, pBid, ldStop, ldTake, 2);
}
}
 
Pomid :

Burada bekleyen emirler vermeniz ve fiyatlarını önceki çubuğun kapanış fiyatına göre hesaplamanız gerekir. BUYSTOP bahisleri ve SELLSTOP 130 hatasını döndürür. Bu kodda bir hata mı var? Veya başka bir işleve bakın.

 void SetOrders() {

   double ldStop= 0 , ldTake= 0 ;
   int     spr=MarketInfo( Symbol (), MODE_SPREAD);
   double PredBar=iClose( NULL , PERIOD_M5 , 1 );
   double pAsk=PredBar+(DistanceSet+spr)* Point ;
   double pBid=PredBar-(DistanceSet+spr)* Point ;

   if (!ExistOrder( 1 )) {
     if (StopLoss!= 0 ) ldStop=pAsk-StopLoss* Point ;
     if (TakeProfit!= 0 ) ldTake=pAsk+TakeProfit* Point ;
    SetOrder(OP_BUYSTOP, pAsk, ldStop, ldTake, 1 );
  }
   if (!ExistOrder( 2 )) {
     if (StopLoss!= 0 ) ldStop=PredBar+(StopLoss* Point );
     if (TakeProfit!= 0 ) ldTake=pBid-TakeProfit* Point ;
    SetOrder(OP_SELLSTOP, pBid, ldStop, ldTake, 2 );
  }
}

Yazarla neden iletişime geçmiyorsunuz? Hala yaşıyor ve genç, yaşlı değil! Her fonksiyonun üstündeki koddaki koordinatlar! Herkes onu tanır ve saygı duyar!

Ve SRC ile bunun gibi kodları nasıl yapıştıracağınızı öğrenin!

 void SetOrders() {

   double ldStop= 0 , ldTake= 0 ;
   int     spr=MarketInfo( Symbol (), MODE_SPREAD);
   double PredBar=iClose( NULL , PERIOD_M5 , 1 );
   double pAsk=PredBar+(DistanceSet+spr)* Point ;
   double pBid=PredBar-(DistanceSet+spr)* Point ;

   if (!ExistOrder( 1 )) {
     if (StopLoss!= 0 ) ldStop=pAsk-StopLoss* Point ;
     if (TakeProfit!= 0 ) ldTake=pAsk+TakeProfit* Point ;
    SetOrder(OP_BUYSTOP, pAsk, ldStop, ldTake, 1 );
  }
   if (!ExistOrder( 2 )) {
     if (StopLoss!= 0 ) ldStop=PredBar+(StopLoss* Point );
     if (TakeProfit!= 0 ) ldTake=pBid-TakeProfit* Point ;
    SetOrder(OP_SELLSTOP, pBid, ldStop, ldTake, 2 );
  }
}

Anlamadan PredBar ile oynadılar ve işte sonuç! İlk paspas. kısmı öğret!

 
İyi akşamlar! Lütfen yeni yapı üzerinde çalışmayan gösterge ile sorunu nasıl çözeceğimi söyleyin. Derlerken, 'TotalOrders' hatası veriyor - geçersiz anahtar ifadesi türü ( hata kodda vurgulanmıştır ) . Saygılarımla, İskender.
 for (i= 0 ; i<k; i++)
   {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) 
    {
       if ((OrderSymbol()==Symb) && (OrderType()==op))
        {
            ko++;
            TotalOrders[ChartListPosition+ 1 ][ko][ 1 ]= NormalizeDouble (OrderOpenPrice(),dig);
            TotalOrders[ChartListPosition+ 1 ][ko][ 2 ]= NormalizeDouble (OrderStopLoss(),dig);
            TotalOrders[ChartListPosition+ 1 ][ko][ 3 ]= NormalizeDouble (OrderTakeProfit(),dig);
            TotalOrders[ChartListPosition+ 1 ][ko][ 4 ]=OrderTicket();
            TotalOrders[ChartListPosition+ 1 ][ko][ 5 ]=OrderLots();
            TotalOrders[ChartListPosition+ 1 ][ko][ 6 ]=OrderType();
            TotalOrders[ChartListPosition+ 1 ][ko][ 7 ]=OrderMagicNumber();
            TotalOrders[ChartListPosition+ 1 ][ 0 ][ 0 ]=ko;
           
               switch ( TotalOrders [ChartListPosition+ 1 ][ko][ 6 ])
              {
               case OP_BUY:
                        Type= "Buy" ;
                 break ;
                
               case OP_BUYSTOP:
                        Type= "Buy Stop" ;

 for ( int j= 1 ;j<=OrdersCount;j++)  
      {
       
         switch ( TotalOrders [ChartsListPosition+ 1 ][j][ 6 ])
          {
           case OP_SELL: 
               if (TotalOrders[ChartsListPosition+ 1 ][j][ 2 ]!= 0 && 
                   ask>=(TotalOrders[ChartsListPosition+ 1 ][j][ 2 ]- NormalizeDouble (StopLevel*point,dig)))  
                   {
                    test=StopLossColor;
                   } 
                   else
                   {
                   if (TotalOrders[ChartsListPosition+ 1 ][j][ 3 ]!= 0 && 
                       ask<=(TotalOrders[ChartsListPosition+ 1 ][j][ 3 ]+ NormalizeDouble (StopLevel*point,dig)))
                      {
                       test=TakeProfitColor;
                      }
                   }
             break ;       
 
karwin :
İyi akşamlar! Lütfen yeni yapı üzerinde çalışmayan gösterge ile sorunu nasıl çözeceğimi söyleyin. Derlerken, 'TotalOrders' hatası veriyor - geçersiz anahtar ifadesi türü (hata kodda vurgulanmıştır) . Saygılarımla, İskender.

Değişken orada olmalı, başka bir şey değil:

               int Переменная=TotalOrders[ChartListPosition+ 1 ][ko][ 6 ];
               switch (Переменная)
              {
               case OP_BUY:
                        Type= "Buy" ;
                 break ;
                
               case OP_BUYSTOP:
                        Type= "Buy Stop" ;
 

Merhaba yoldaşlar.

Söyleyin bana, MT5'e pek aşina değilim, neredeyse hiç kullanmadım, teste sadece bir işlemci çekirdeği dahil oldu, bende 8 tane var, neden bu? Nasıl düzeltilir?


 
7Konstantin7 :

Merhaba yoldaşlar.

Söyleyin bana, MT5'e pek aşina değilim, neredeyse hiç kullanmadım, teste sadece bir işlemci çekirdeği dahil oldu, bende 8 tane var, neden bu? Nasıl düzeltilir?


ve bu, sormanız gereken beşinci forumda
 
7Konstantin7 :

Merhaba yoldaşlar.

Söyleyin bana, MT5'e pek aşina değilim, neredeyse hiç kullanmadım, teste sadece bir işlemci çekirdeği dahil oldu, bende 8 tane var, neden bu? Nasıl düzeltilir?


Peki test ederken mi yoksa optimize ederken mi? Sadece test ise, bir çekirdek çalışır, ancak strateji test cihazında "Optimizasyon" seçeneği etkinleştirildiğinde, tüm işlemci çekirdekleri çalışır.
 
borilunad :

PredBar ile anlamadan oynadılar ve işte sonuç! İlk paspas. kısmı öğret!

Teşekkürler, öğrendim, düzelttim.
 
evillive :
ve bu, sormanız gereken beşinci forumda

"Hayat" ne derse desin, MT5'te içiyorlar, yakında sitede içecekler, ben orada hiç oturmuyorum, o yüzden burada sordum soruyu.

barabashkakvn :
Peki test ederken mi yoksa optimize ederken mi? Sadece test ise, bir çekirdek çalışır, ancak strateji test cihazında "Optimizasyon" seçeneği etkinleştirildiğinde, tüm işlemci çekirdekleri çalışır.

Bunu anladım, herkese teşekkürler, test ederken, bir çekirdek çalışıyor, genel olarak her şey olması gerektiği gibi çalışıyor,

bu tamamen aptalca, görünüşe göre bilerek yaptılar, test ederken neden işlemcinin tüm gücünü kullanmazlar, net değil.

 
7Konstantin7 :

"Hayat" ne derse desin, MT5'te içiyorlar, yakında sitede içecekler, ben orada hiç oturmuyorum, o yüzden burada sordum soruyu.

Bunu anladım, herkese teşekkürler, test ederken, bir çekirdek çalışıyor, genel olarak her şey olması gerektiği gibi çalışıyor,

bu tamamen aptalca, görünüşe göre bilerek yaptılar, test ederken neden işlemcinin tüm gücünü kullanmazlar, net değil.

Ve neden test ederken (optimizasyon etkinleştirilmeden) tüm çekirdekleri yükleyin? Sonuçta, görselleştirme ile test ediliyorsa, o zaman burada acelesi yoktur, ancak görselleştirme olmadan test edilirse, modern bilgisayarlar tohumlar gibi ve bir çekirdekte böyle bir görevi tıklar.