[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 3. - sayfa 212

 

Ve şimdi fonksiyondan ne döndürüldüğü belli değil.

dönüş(OrdOpenTimeBuy);

 
Roger :

Ve şimdi fonksiyondan ne döndürüldüğü belli değil.

dönüş(OrdOpenTimeBuy);

Peki daha iyi olacak mı?

 //=========== OrdTimeBuy_b(int MAGIC) ===============================================================
//  Функция возвращает время открытия последнего рыночного Buy-ордера, принадлежащего MAGIC или 777 
//---------------------------------------------------------------------------------------------------
datetime OrdTimeBuy_b( int MAGIC)
 {
   string SMB= Symbol ();
   datetime OrdOpenTimeBuy= 0 ;
   int i;
   for (i= 0 ;i< OrdersTotal ();i++)
   {
     if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES) == true)
     {
       if ( OrderSymbol ()==SMB)
       {
         if ( OrderMagicNumber ()==MAGIC || OrderMagicNumber ()== 777 )
         {
           if ( OrderType ()==OP_BUY)
           {
             if (OrdOpenTimeBuy< OrderOpenTime ())
             {
              OrdOpenTimeBuy= OrderOpenTime ();
             }  
           }  
         }  
       }          
     }
   }
   if (OrdOpenTimeBuy== 0 ) return ( 0 );
   return (OrdOpenTimeBuy);
 }
//=====================================================================================================


//===========  Локальная низинка  =================================================================
   double LowestPoint_b( int MAGIC)
   {  
     datetime OrdOpenTimeBuy=OrdTimeBuy_b(MAGIC);  
     int ShiftBuy= 0 ;
     double LowestPoint= 0 ;
     if (OrdOpenTimeBuy!= 0 )
     {  
      ShiftBuy= iBarShift ( NULL , PERIOD_M1 ,OrdOpenTimeBuy,true);
      LowestPoint= iLow ( NULL , PERIOD_M1 , iLowest ( NULL , PERIOD_M1 ,MODE_LOW,ShiftBuy, 0 ));
     } 
     return (LowestPoint);
   }  
//=================================================================================================
 
nemo811 :

Peki daha iyi olacak mı?


Evet, olacak.
 
Roger :
sergeev :

Sayesinde.

Bu hataları düzelttim, ancak danışman hala sorunlu. Kazmaya devam edelim :)

 
nemo811 :

Sayesinde.

Bu hataları düzelttim, ancak danışman hala sorunlu. Kazmaya devam edelim :)


eşit mi ve metaeditor.exe dosyanızın silindiğini düşündüm ve manuel olarak hataları kontrol ettiniz.

bu bir danışmansa, kesinlikle işe yaramaz. kodunuzda bir başlatma işlevi yok.

 

Araştırdığım bir şey.

Bu kodu yazdı:

   RefreshRates ();
   bool ticket2=false;
   if (st_TrStop> 0 && SchSellStop777_b()> 0 ) {
   double LowestPoint=LowestPoint_b(MAGIC);
   double ee= 0 ;
   for (i= OrdersTotal ()- 1 ;i>= 0 ;i--) { //Начало цикла
     if (! OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {WriteError(i);}
     else { //начало работы с выбранным ордером
     if ( OrderSymbol ()==SMB && OrderMagicNumber ()==MAGIC) {
     if ( OrderType ()==OP_BUY) { //находится вверху, едет вниз  
     Last_OrderOpBuy(MAGIC);
     if (((Ask-(st_BU+ad.Spred+ 1 )* Point )>= OrderOpenPrice ()) ||
        ((Ask-(st_TrStop- 1 -ad.Spred)* Point )>=LowestPoint)) {

     if ((Ask-(st_BU+ad.Spred+ 1 )* Point )>= OrderOpenPrice ())
      {
       Price_SS= NormalizeDouble ( OrderOpenPrice ()+(ad.Spred+ 1 )* Point , Digits );
      }
     else
      { 
       Price_SS= NormalizeDouble (LowestPoint- 1 * Point , Digits );     
      }  

     if (ChastZakr)
      {
       if (SchBuy> 1 )
        {  
         OrderClose (OrdTicketBuy, OrderLots (), MarketInfo ( OrderSymbol (), MODE_BID),Proskalz, CLR_NONE );
         Alert (SMB, ": произведено частичное закрытие Buy-позиции, тикет: " ,OrdTicketBuy, "." );
         ee=SchBuyLots- OrderLots ();
        }   
       else
        {  
         if (SchBuyLots+SchBuyLots777>MinLot)
          { 
           OrderClose (OrdTicketBuy, NormalizeDouble ( OrderLots ()/ 2 , 2 ), MarketInfo ( OrderSymbol (), MODE_BID),Proskalz, CLR_NONE );
           Alert (SMB, ": произведено частичное закрытие Buy-ордера, тикет: " ,OrdTicketBuy, "." );
           ee=SchBuyLots- NormalizeDouble ( OrderLots ()/ 2 , 2 );
          }  
        }  
      }
     else
      {   
       ee=SchBuyLots;
      }

      DeleteOtlozhMAGIC(MAGIC);
      DeleteOtlozh777();
      ticket2= OrderSend ( Symbol (),OP_SELLSTOP,ee,Price_SS,Proskalz, 0 , 0 , "MAGIC_" + MAGIC,MAGIC, 0 );
         if (ticket2!= 0 && ticket2!=- 1 ) {
           Alert (SMB, ": установлен траловый SellStop." );
           Print (SMB, ": установлен траловый SellStop." );
         }
         if (ticket2== 0 || ticket2==- 1 ) {
          GLE= GetLastError ();
          ED=ErrorDescription(GLE);
           Alert (SMB, ": ошибка №" ,GLE, " установки тралового SellStop." );
           Alert (SMB, ": описание ошибки - " ,ED);
           Print (SMB, ": ошибка №" ,GLE, " установки тралового SellStop." ); 
           Print (SMB, ": описание ошибки - " ,ED);
         }
       }       
      }       
     }  
    }  
   }  
  }
 

Buggy. Ama şu durumdaysa:

     if (((Ask-(st_BU+ad.Spred+ 1 )* Point )>= OrderOpenPrice ()) ||
        ((Ask-(st_TrStop- 1 -ad.Spred)* Point )>=LowestPoint)) {

...LowestPoint yerine belirli bir sayı girin - her şey saat gibi çalışır.

LowestPoint araması yukarıdaki gönderide verilmiştir.

Yardım edin lütfen, yoksa ikinci günü kazıyordum.

Şimdiden teşekkür ederim.

 
sergeev :

eşit mi ve metaeditor.exe dosyanızın silindiğini düşündüm ve manuel olarak hataları kontrol ettiniz.

bu bir danışmansa, kesinlikle işe yaramaz. kodunuzda bir başlatma işlevi yok.

Çok titizsin, ama bunun için sana minnettarım.

Kodun sadece ilginç kısmını veriyorum. Tüm danışmanı düzenlerseniz, soru kaybolma riski taşır :)

Sayesinde.

 
-1 değerini kontrol etmiyorsunuz
ShiftBuy
 
SÖYLE BİR FONKSİYON VAR MI, sadece MACD için ihighest gibi
 
CLAIN :
SÖYLE BİR FONKSİYON VAR MI, sadece MACD için ihighest gibi

Ben görmedim ama yazabilirsiniz... Maskenin ana satırının maksimum değeri için geçerli olanı saymazsak son 10 çubuk için bu şekilde olacaktır:

 double Hi ()
{ int i,j; H= 0 ;
while (i<= 10 )
{ if (H< iMACD ( NULL , 0 , 12 , 26 , 9 , PRICE_CLOSE ,MODE_MAIN,i+ 1 )) 
H= iMACD ( NULL , 0 , 12 , 26 , 9 , PRICE_CLOSE ,MODE_MAIN,i+ 1 );
i++;}
return (H);
}