Neden kaldırıldı. Eğer bırakılırsa, o zaman her şey işe yarar
Bu gizemli işareti koydum ...... ama sonuç aynı ... işlev çalışmıyor
bool isCloseLastPosByStop( string sy, int op, int mn, double& ll)
{
double pt;
datetime t;
int dg, i, j=- 1 , k=OrdersHistoryTotal()- 1 ;
for (i=k; i>= 0 ; i--)
{
if ( OrderSelect (i, SELECT_BY_POS, MODE_HISTORY))
{
if (OrderMagicNumber()!=mn) continue ; // если магик не тот, переходим к следующемуif (OrderSymbol()!=sy) continue ; // если символ не тот, переходим к следующемуif (OrderType()!=op) continue ; // если тип не тот, переходим к следующемуif (t<OrderCloseTime())
{
t=OrderCloseTime();
j=i;
}
}
}
if ( OrderSelect (j, SELECT_BY_POS, MODE_HISTORY))
{
dg=MarketInfo(OrderSymbol(), MODE_DIGITS); // количество знаков в цене символа ордера
pt=MarketInfo(OrderSymbol(), MODE_POINT); // размер пункта инструмента в валюте котировки ордераif ( MathAbs (OrderClosePrice()-OrderStopLoss())< 0.5 *pt) // Если закрыт по стопу
{
ll=OrderLots(); // записываем количество лотов в ордере, закрытом по стопуreturn ( true ); // возвращаем истину
}
}
return (False); // возвращаем ложь (позиции нету, либо не по стопу)
}
double Magic, Lot ;
int start()
{
double Price=iOpen ( Symbol (), 0 , 0 );
int last_order_bar = 0 ;
int ot = OrdersTotal ();
if (ot> 0 ) //если есть ордера в рынке
{
if ( OrderSelect (ot- 1 ,SELECT_BY_POS))
if (OrderType ()==OP_BUY || OrderType ()==OP_SELL )
last_order_bar = iBarShift ( Symbol (), 0 ,OrderOpenTime ());
}
int last_hist_order_bar = 0 ;
int oht = OrdersHistoryTotal();
if (oht> 0 )
{
if ( OrderSelect (oht- 1 ,SELECT_BY_POS, MODE_HISTORY))
if (OrderType ()==OP_BUY || OrderType ()==OP_SELL)
last_hist_order_bar = iBarShift ( Symbol (), 0 ,OrderOpenTime ());
}
if (ot== 0 )
//if (ot==0 || last_order_bar>0) //если ордеров нет либо последний открыт не на текущем баре // if (oht==0 || last_hist_order_bar>0) if (Bid ==Price)
//=============================================================== if (((Open[ 1 ]-Close[ 1 ])> 100 * Point )&&((Open[ 1 ]-Close[ 1 ])< 120 * Point ))
if (((High[ 1 ]-Open[ 1 ])> 40 * Point )&&((High[ 1 ]-Open[ 1 ])< 60 * Point ))
if (((Close[ 1 ]-Low[ 1 ])> 40 * Point )&&((Close[ 1 ]-Low[ 1 ])< 60 * Point ))
//============================================================Lot= MarketInfo( Symbol (), MODE_MINLOT); if (isCloseLastPosByStop( Symbol (), OP_BUY, Magic, Lot))
{
Lot=Lot* 2 ;
OrderSend ( Symbol (),OP_SELL,Lot,Bid, 1 ,Ask+ 1500 * Point ,Ask- 300 * Point , "jfh" , 123 );
}
else
{
Lot= 0.1 ;
OrderSend ( Symbol (),OP_SELL, 1 ,Bid,Lot,Ask+ 1500 * Point ,Ask- 300 * Point , "jfh" , 123 );
}
return ( 0 );
}
//============================================================ bool isCloseLastPosByStop( string sy, int op, int mn, double &ll)
{
double pt;
datetime t;
int dg, i, j=- 1 , k=OrdersHistoryTotal()- 1 ;
for (i=k; i>= 0 ; i--)
{
if ( OrderSelect (i, SELECT_BY_POS, MODE_HISTORY))
{
if (OrderMagicNumber()!=mn) continue ; // если магик не тот, переходим к следующемуif (OrderSymbol()!=sy) continue ; // если символ не тот, переходим к следующемуif (OrderType()!=op) continue ; // если тип не тот, переходим к следующемуif (t<OrderCloseTime())
{
t=OrderCloseTime();
j=i;
}
}
}
if ( OrderSelect (j, SELECT_BY_POS, MODE_HISTORY))
{
dg=MarketInfo(OrderSymbol(), MODE_DIGITS); // количество знаков в цене символа ордера
pt=MarketInfo(OrderSymbol(), MODE_POINT); // размер пункта инструмента в валюте котировки ордераif ( MathAbs (OrderClosePrice()-OrderStopLoss())< 0.5 *pt) // Если закрыт по стопу
{
ll=OrderLots(); // записываем количество лотов в ордере, закрытом по стопуreturn ( true ); // возвращаем истину
}
}
return (False); // возвращаем ложь (позиции нету, либо не по стопу)
}
double Magic, Lot;
int start()
{
double Price=iOpen (Symbol (),0,0);
int last_order_bar = 0;
int ot = OrdersTotal();
if (ot>0) //если есть ордера в рынке
{
if (OrderSelect (ot-1,SELECT_BY_POS))
if (OrderType ()==OP_BUY || OrderType ()==OP_SELL )
last_order_bar = iBarShift (Symbol (),0,OrderOpenTime ());
}
int last_hist_order_bar = 0;
int oht = OrdersHistoryTotal();
if (oht>0)
{
if (OrderSelect (oht-1,SELECT_BY_POS, MODE_HISTORY))
if (OrderType ()==OP_BUY || OrderType ()==OP_SELL)
last_hist_order_bar = iBarShift (Symbol (),0,OrderOpenTime ());
}
if (ot==0)
//if (ot==0 || last_order_bar>0) //если ордеров нет либо последний открыт не на текущем баре // if (oht==0 || last_hist_order_bar>0) if (Bid ==Price)
//=============================================================== if(((Open[1]-Close[1])>100*Point)&&((Open[1]-Close[1])<120*Point))
if(((High[1]-Open[1])>40*Point)&&((High[1]-Open[1])<60*Point))
if(((Close[1]-Low[1])>40*Point)&&((Close[1]-Low[1])<60*Point))
//============================================================
Lot= MarketInfo(Symbol(), MODE_MINLOT);
if (isCloseLastPosByStop(Symbol(), OP_BUY, Magic, Lot))
{
Lot=Lot*2;
OrderSend(Symbol(),OP_SELL,Lot,Bid,1,Ask+1500*Point,Ask-300*Point,"jfh",123 );
}
else
{
Lot=0.1;
OrderSend(Symbol(),OP_SELL,1,Bid,Lot,Ask+1500*Point,Ask-300*Point,"jfh",123 );
}
return(0);
}
//============================================================ bool isCloseLastPosByStop(string sy, int op, int mn, double &ll)
{
double pt;
datetime t;
int dg, i, j=-1, k=OrdersHistoryTotal()-1;
for (i=k; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
{
if (OrderMagicNumber()!=mn) continue; // если магик не тот, переходим к следующемуif (OrderSymbol()!=sy) continue; // если символ не тот, переходим к следующемуif (OrderType()!=op) continue; // если тип не тот, переходим к следующемуif (t<OrderCloseTime())
{
t=OrderCloseTime();
j=i;
}
}
}
if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY))
{
dg=MarketInfo(OrderSymbol(), MODE_DIGITS); // количество знаков в цене символа ордера
pt=MarketInfo(OrderSymbol(), MODE_POINT); // размер пункта инструмента в валюте котировки ордераif (MathAbs(OrderClosePrice()-OrderStopLoss())< 0.5*pt) // Если закрыт по стопу
{
ll=OrderLots(); // записываем количество лотов в ордере, закрытом по стопуreturn(true); // возвращаем истину
}
}
return(False); // возвращаем ложь (позиции нету, либо не по стопу)
}
Neden kaldırıldı. Eğer bırakılırsa, o zaman her şey işe yarar
Bu gizemli işareti koydum ...... ama sonuç aynı ... işlev çalışmıyor
Merak ediyorum ..... bu işaret ne anlama geliyor .... ders kitabında bununla ilgili hiçbir şey hatırlayamıyorum.
Referansa göre geçmek, parametreyi değiştirmenize (değiştirmenize) izin verir
Referansa göre geçmek, parametreyi değiştirmenize (değiştirmenize) izin verir
Teşekkürler.Gelecek için aklımda tutacağım.
Ama işlev neden çalışmıyor?
Beni doğru yola iletirseniz size minnettar kalırım.Teşekkürler.Gelecek için aklımda tutacağım.
Ama işlev neden çalışmıyor?
Bana doğru yolu gösterirseniz size minnettar kalırım.Minimum lotu iade edin
Minimum lotu iade edin
İade.
Şimdi derlerken Lot değişkeni tanımlı değil hatası veriyor.
' ' - değişken tanımlı değil C:\Program Files\Alpari NZ MT4\experts\Önceki CANDLE.mq4 (47, 39)
http://clip2net.com/s/61vFZH
Start'tan önce tanımlanmış olmasına rağmen.
İade.
Şimdi derlerken Lot değişkeni tanımlı değil hatası veriyor.
' ' - değişken tanımlı değil C:\Program Files\Alpari NZ MT4\experts\Önceki CANDLE.mq4 (47, 39)
http://clip2net.com/s/61vFZH
Start'tan önce tanımlanmış olmasına rağmen.
tüm koda ihtiyacım var
tüm koda ihtiyacım var
tüm koda ihtiyacım var
Durdurma emri kapatıldıktan sonra, bir sonraki emrin, SON stopla kapatılan hacme eşit bir hacimle açılmasına ihtiyacım var.
2 ile çarpılan sipariş
Ve SON sipariş başka bir nedenle (durarak değil) kapatılmışsa - pozisyon hacmi 0,1 olmalıdır.İade.
Şimdi derlerken Lot değişkeni tanımlı değil hatası veriyor.
' ' - değişken tanımlı değil C:\Program Files\Alpari NZ MT4\experts\Önceki CANDLE.mq4 (47, 39)
http://clip2net.com/s/61vFZH
Start'tan önce tanımlanmış olmasına rağmen.
Derleme. Oradaki mantığın tamamen topal gibi geldi bana... Tabi ki izlemedim. Sadece hataları kontrol ettim.
tarih saat aynı int