İyi günler, lütfen bana söyleyin - Böyle bir sorunum var: Robot bir pozisyona giriyor ve bir sonraki tıklamada stop loss önceki düşük seviyenin altında değişiyor ve stoploss'un sadece mumun üzerinde durduğu mum olduğunda değiştirilmesine ihtiyacım var. pozisyon açıldı kapandı
void TrailingStop()
{
for ( int i= 0 ;i< OrdersTotal ();i++)
{
if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)== true );
{
if (OrderSymbol()== Symbol () && OrderMagicNumber()==Magic)
{
if (OrderType()==OP_BUY)
{
double LOW_1 = iLow( NULL , 0 , 1 );
bool res=OrderModify(OrderTicket(),OrderOpenPrice(),LOW_1,OrderTakeProfit(), 0 ,White);
if (!res) Print ( "Ошибка модификации ордера. Код ошибки=" , GetLastError ());
}
if (OrderType()==OP_SELL)
{
double HIGH_1 = iHigh( NULL , 0 , 1 );
res=OrderModify(OrderTicket(),OrderOpenPrice(),HIGH_1,OrderTakeProfit(), 0 ,White);
if (!res) Print ( "Ошибка модификации ордера. Код ошибки=" , GetLastError ());
}
}
}
}
return ;
}
remjte : Beyler iyidir! Bir pozisyon açmak için yeterli marj yoksa danışmanı test etmeyi bırakacak kodu söyle. Teşekkür ederim!
AccountFreeMarginCheck() belirli bir değerden küçükse (örneğin, AccountFreeMargin'in %50'sinden az) - alım satım işlevinden çıkın , boş döngüler neredeyse yüklenmediğinden test hızlı bir şekilde sona erer.
evillive : AccountFreeMarginCheck() belirli bir değerden küçükse (örneğin, AccountFreeMargin'in %50'sinden az) - alım satım işlevinden çıkın, boş döngüler neredeyse yüklenmediğinden test hızlı bir şekilde sona erer.
Dürüst olmak gerekirse, hala çok yeşil, bu kod parçasını buldum, nasıl düzelteceğimi söyleyebilir misiniz?
if (AccountFreeMarginCheck(Symbol(), a_cmd_0, l_lots_4) <= 0.0) return (-1); if ( GetLastError() == 134/* NOT_ENOUGH_MONEY */) return (-2); dönüş(l_lots_4);
Dürüst olmak gerekirse, hala çok yeşil, bu kod parçasını buldum, nasıl düzelteceğimi söyleyebilir misiniz?
if (AccountFreeMarginCheck(Symbol(), a_cmd_0, l_lots_4) <= 0.0) return (-1); if (GetLastError() == 134/* NOT_ENOUGH_MONEY */) (-2); dönüş(l_lots_4);
Neden kural, ve öyle yapacak. Kendi değişken adlarınızı değiştirmediğiniz sürece.
Ancak daha küçük bir riske ihtiyacınız varsa, o zaman if (AccountFreeMarginCheck(Symbol(), a_cmd_0, l_lots_4) <= AccountFreeMargin()*0.5) return (-1); - bu durumda, belirtilen lot ile bir pozisyon açtıktan sonra %50 veya daha az serbest teminat olacaksa, geri dönün (-1)
Lütfen bana söyle. Listedeki ikinci sıranın seçileceği ve ardından silineceği (ertelenmiş) kodun bir bölümünü yazmanız gerekir. OrderSelect (1, SELECT_BY_POS, MODE_TRADES) olduğunda 4051 döndürür
remjte : Beyler iyidir! Bir pozisyon açmak için yeterli marj yoksa danışmanı test etmeyi bırakacak kodu söyle. Teşekkür ederim!
// проверяем доступность свободных средствif (AccountFreeMarginCheck( Symbol (),OP_BUY,OpenLot)<= 0 || GetLastError ()== 134 )
{
Print ( "It is impossible to open the order Buy, not enough money." );
return ( 0 );
}
// проверяем доступность свободных средствif (AccountFreeMarginCheck( Symbol (),OP_SELL,OpenLot)<= 0 || GetLastError ()== 134 )
{
Print ( "It is impossible to open the order Sell, not enough money." );
return ( 0 );
}
Pomid : Lütfen bana söyle. Listedeki ikinci sıranın seçileceği ve ardından silineceği (ertelenmiş) kodun bir bölümünü yazmanız gerekir. OrderSelect(1, SELECT_BY_POS, MODE_TRADES) olduğunda 4051 döndürür
Sipariş sayısı 0'dan başlar. Deneyin, OrderSelect (0, SELECT_BY_POS, MODE_TRADES)
İyi günler, lütfen bana söyleyin - Böyle bir sorunum var: Robot bir pozisyona giriyor ve bir sonraki tıklamada stop loss önceki düşük seviyenin altında değişiyor ve stoploss'un sadece mumun üzerinde durduğu mum olduğunda değiştirilmesine ihtiyacım var. pozisyon açıldı kapandı
veya bu hatadan nasıl kurtulurum
Beyler iyidir! Bir pozisyon açmak için yeterli marj yoksa danışmanı test etmeyi bırakacak kodu söyle.
Teşekkür ederim!
AccountFreeMarginCheck() belirli bir değerden küçükse (örneğin, AccountFreeMargin'in %50'sinden az) - alım satım işlevinden çıkın, boş döngüler neredeyse yüklenmediğinden test hızlı bir şekilde sona erer.
Dürüst olmak gerekirse, hala çok yeşil, bu kod parçasını buldum, nasıl düzelteceğimi söyleyebilir misiniz?
if (AccountFreeMarginCheck(Symbol(), a_cmd_0, l_lots_4) <= 0.0) return (-1);
if ( GetLastError() == 134/* NOT_ENOUGH_MONEY */) return (-2);
dönüş(l_lots_4);
Daha basit bir şekilde yazacağım: böyle bir koşul nasıl yazılır - Yeni bir mum görünene kadar açık bir siparişi değiştirmeyin
Dürüst olmak gerekirse, hala çok yeşil, bu kod parçasını buldum, nasıl düzelteceğimi söyleyebilir misiniz?
if (AccountFreeMarginCheck(Symbol(), a_cmd_0, l_lots_4) <= 0.0) return (-1);
if (GetLastError() == 134/* NOT_ENOUGH_MONEY */) (-2);
dönüş(l_lots_4);
Neden kural, ve öyle yapacak. Kendi değişken adlarınızı değiştirmediğiniz sürece.
Ancak daha küçük bir riske ihtiyacınız varsa, o zaman if (AccountFreeMarginCheck(Symbol(), a_cmd_0, l_lots_4) <= AccountFreeMargin()*0.5) return (-1); - bu durumda, belirtilen lot ile bir pozisyon açtıktan sonra %50 veya daha az serbest teminat olacaksa, geri dönün (-1)
Beyler iyidir! Bir pozisyon açmak için yeterli marj yoksa danışmanı test etmeyi bırakacak kodu söyle.
Teşekkür ederim!
Lütfen bana söyle. Listedeki ikinci sıranın seçileceği ve ardından silineceği (ertelenmiş) kodun bir bölümünü yazmanız gerekir. OrderSelect(1, SELECT_BY_POS, MODE_TRADES) olduğunda 4051 döndürür