[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 440

 
// ищем самый последний закрытый ордер
datetime time = 0 ;
int ticket = - 1 ;
for ( i = OrdersHistoryTotal ( ) - 1 ; i > = 0 ; i - - )
{
   if ( OrderSelect ( i , SELECT_BY_POS , MODE_HISTORY ) )
   {
      if ( OrderSymbol ( ) = = Symbol ( ) & & OrderMagicNumber ( ) = = 16384 )
      {
         if ( OrderCloseTime ( ) > time )
         {
            time = OrderCloseTime ( ) ;
            ticket = OrderTicket ( ) ;
         }
      }
   }
}
if ( OrderTicket ( ) ! = ticket ) OrderSelect (ticket , SELECT_BY_TICKET ) ;
if ( OrderProfit ( ) < = 0 ) Lots = OrderLots ( ) * 2 ;
//-----
Kod böyle görünüyor ... ama kontrol etmedi ...
 
Vinin >> :

Belki daha iyi olacak

Yardımın için çok teşekkürler!!



Amerika ağlıyor ve Avrupa!

Geleceği ciddi olarak düşünün!

Finansal f-pa'yı düşünüyorlar gibi görünüyorlar,

ve lischb Rusya - tarafından ... don!

Raftan eski bir armonika alalım,

Böyle krizlere alışık değiliz!

Votka yağı ve patates olurdu -

her şeyden kurtulacağız, güçlü anne !!!

HEPSİ 23 ŞUBAT'TAN İTİBAREN !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

 
Summer , kodunuzdaki zaman değişkenini nasıl bildirdiniz?
 
Necron >> :

Teşekkür ederim! Seçeneğiniz için danışmanda düzeltildi. Buraya bu mucizeyi ekleyeceğim ve ilk (az ya da çok) ciddi eserim olarak Kod Tabanında yayınlayacağım! =)) Danışman yazdığım sistemin adı Muteki, sadece biraz eklemelerimle (pozisyon yönetimi üzerine) . En azından tüm bu trend çizgilerini çizecek bir gösterge olması güzel =)))

Sadece başka bir soru vardı. Aynı anda üç pozisyon nasıl açılır (veya yaklaşık bir teklif) Aşağıdakileri yaptım. Bu doğru mu, yoksa başka yollar var mı? Ertelemeler işe yaramaz =(( Küçük bir mesafe bazen çok fazladır :(


if(b1==0 && !IsTradeContextBusy())
{
if(Low[0]<HHL_1 && Bid>=HHL_1 && trade_buy==true)
{
ticket=OrderSend(Symbol(),OP_BUY,lot,Ask,slippage*PointX,sl_b,BuyTarget1,"lot_1_buy",Magic,0,Lime);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("lot_1_buy order opened : ",OrderOpenPrice());
b1=1;
}
else Print("Error opening BUY order : ",GetLastError());

return(0);
}
}

burada bir sipariş açıyorsunuz. 3'ü bir kerede deneyin, bu aşamada daha hızlı sonuçlanacaktır.

Kendim denemedim, ama belki, 3 ticaret terminalini paralelleştirirseniz ve her terminalde ayrı fırsatlar açarsanız, bir şeyler kazanabilirsiniz...

 
StatBars >> :
Код вроде бы такой должен быть... но не проверял...

Bir hata oluştu, bunu bir uyarı ile çıkardım, partinin her zaman 0 çıktığını gösterdi.


Necron'a:


kodda bir hata buldu ve onu kaldırdı, ancak yine de şöyle küfrediyor:



Techno'ya:

çift)

Dosyalar:
graal_3.mq4  3 kb
 
Zaman değişkenini double olarak bildirdiniz, ancak tarih saatine ihtiyacınız var, orijinal kodunuzla sürümü düzeltin ve kontrol edin, doğru görünüyor
 
Summer :

Uzman Danışmanlarımdan birinde şu şekilde yapılır:



double lt = getLots();//эта строчка в переменных, в ордерсенд пишем lt,


double getLots() { // это или перед start или после всего кода

double minlot = MarketInfo(Symbol(), MODE_MINLOT);
double maxlot = MarketInfo(Symbol(), MODE_MAXLOT);
int round;
if(minlot==0.01)round=2;
if(minlot==0.1) round=1;
double koeff=2;
double result=Lots;

//int round = 2;
int total = OrdersHistoryTotal();
double spread = MarketInfo(Symbol(), MODE_SPREAD);

for (int i = 0; i < total; i++) {
OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) {
if (OrderProfit() > 0) {
result = Lots;

} else {
result = OrderLots() * koeff;

}
}
}
result = NormalizeDouble(result, round);
if (result > maxlot) {
result = maxlot;
}
if (result < minlot) {
result = minlot;
}
RefreshRates();
return(result);
}

 

Techno , bahşiş için teşekkürler!) StatBars ve Necron'a da teşekkürler.

ancak martingalin tam olarak ortaya çıkması için kodu biraz elden geçirdim))

 // ищем самый последний закрытый ордер
for ( i = OrdersHistoryTotal ( ) ; i > = 0 ; i - - ) {
   if ( OrderSelect ( i , SELECT_BY_POS , MODE_HISTORY ) ) {
     if ( OrderSymbol ( ) = = Symbol ( ) ) {
       if ( OrderMagicNumber ( ) = = Magic ) {
         if ( OrderCloseTime ( ) ! = 0 ) {
           if ( OrderCloseTime ( ) > time ) {
          time = OrderCloseTime ( ) ;
          profit = OrderProfit ( ) ;
          
             //мартин
             if ( profit < 0 ) Lots = OrderLots ( ) * 2 ;
             if ( profit > = 0 ) Lots = 0.1 ; // начальный лот
             //----
            
            
           }
         }
       }
     }
   }
}
//-----
 
StatBars >> :

burada bir sipariş açıyorsunuz. 3'ü bir kerede deneyin, bu aşamada daha hızlı sonuçlanacaktır.

Kendim denemedim, ama belki, 3 ticaret terminalini paralelleştirirseniz ve her terminalde ayrı fırsatlar açarsanız, bir şeyler kazanabilirsiniz...

Anlıyorum, elimde 6 tane var =) Üçü satın almak için, üçü satılık.Daha sonra demoda kontrol etmeye çalışacağım. Son çare olarak ertelenmiş bir şeyler yapmaya çalışacağım.

 
Summer >> :

Bir hata oluştu, bir uyarı ile görüntüledim, partinin her zaman 0 çıktığını gösterdi.

 double getLot ( )
{
if ( OrdersHistoryTotal ( ) = = 0 ) return ( 0.1 ) ;
// ищем самый последний закрытый ордер
datetime time = 0 ;
int ticket = - 1 ;
for ( i = OrdersHistoryTotal ( ) - 1 ; i > = 0 ; i - - )
{
   if ( OrderSelect ( i , SELECT_BY_POS , MODE_HISTORY ) )
   {
      if ( OrderSymbol ( ) = = Symbol ( ) /* && OrderMagicNumber()==16384*/ )
      {
         if ( OrderCloseTime ( ) > time )
         {
            time = OrderCloseTime ( ) ;
            ticket = OrderTicket ( ) ;
         }
      }
   }
}
if ( OrderTicket ( ) ! = ticket ) OrderSelect ( ticket , SELECT_BY_TICKET ) ;
if ( OrderProfit ( ) < = 0 ) return ( NormalizeDouble ( OrderLots ( ) * 2 , 2 ) ) ;
if ( OrderProfit ( ) > 0 ) return ( 0.1 ) ;
//-----
}


Neden: