Yani, burada koşullu if ifadesi yerine hemen bool türündebir ticaret işlevi yazılmıştır. Böyle bir gösterimin şuna eşdeğer olduğunu doğru anlıyor muyum:
trader781 : düzeltildi, argüman eklendi, global kapsama taşındı, şimdi bu argümanın diğer fonksiyonlarda girdi olarak kullanıldığına dair bir uyarı veriyor
biletin üzerine yaz, martin ile son siparişten çalış
ve o zaman 'count' bildiriminin nasıl kaldırılacağı, global bildirimi satırda gizler ...
olması gerektiği gibi çalışmasını sağlamak ilginç.
Şimdiye kadar, test cihazının sonuçlarına göre, bir yerde oldukça iyi bir çalışma veriyor, bir yerde hemen "Uzman Danışmanda aşılmaz hatalar"
Düzeltilmiş versiyonu gösterin, aksi takdirde falcılık kodsuz olur.
Yani, burada koşullu if ifadesi yerine hemen bool türündebir ticaret işlevi yazılmıştır. Böyle bir gösterimin şuna eşdeğer olduğunu doğru anlıyor muyum:
Hem yardıma hem de ders kitabına baktım - bu formatın bir kaydını bulamadım.
Ve bir ifade yerine hemen farklı türde fonksiyonlar yazmak mümkün müdür? Ve eğer öyleyse, algoritma ne olurdu?
Bunun gibi if(OrderSelect(ticket,SELECT_BY_TICKET))==true {OrderModify(ticket,OrderOpenPrice(), SL, TP,0}; çalışmaz.Koşul parantezlerin dışına atılamaz.
Ve bunun gibi if(OrderSelect(ticket,SELECT_BY_TICKET)==true) {OrderModify(ticket,OrderOpenPrice(), SL, TP,0}; yapabilirsiniz.
Bunun gibi if(OrderSelect(ticket,SELECT_BY_TICKET))==true {OrderModify(ticket,OrderOpenPrice(), SL, TP,0}; çalışmaz.Koşul parantezlerin dışına atılamaz.
Ve bunun gibi if(OrderSelect(ticket,SELECT_BY_TICKET)==true) {OrderModify(ticket,OrderOpenPrice(), SL, TP,0}; yapabilirsiniz.
Evet, bir braket ile kapatıldı. Sorunun geri kalanı alakalı.
Duck, sağlandığı için argümanı işleve iletir. Kaldırmak daha iyi olsa da, bir totoloji olduğu ortaya çıkıyor.
Ve döngüde, tüm siparişler yeniden hesaplanmayacak.
biletin üzerine yaz, martin ile son siparişten çalış
ve o zaman 'count' bildiriminin nasıl kaldırılacağı, global bildirimi satırda gizler ...
olması gerektiği gibi çalışmasını sağlamak ilginç.
Şimdiye kadar, test cihazının sonuçlarına göre, bir yerde oldukça iyi bir çalışma veriyor, bir yerde hemen "Uzman Danışmanda aşılmaz hatalar"
Selamlar.
Şöyle bir girişe rastladım:
Yani, burada koşullu if ifadesi yerine hemen bool türünde bir ticaret işlevi yazılmıştır. Böyle bir gösterimin şuna eşdeğer olduğunu doğru anlıyor muyum:
if ( OrderSelect (bilet, SELECT_BY_TICKET )) ==true { OrderModify (ticket, OrderOpenPrice (), SL, TP, 0} ; ?
Hem yardıma hem de ders kitabına baktım - bu formatın bir kaydını bulamadım.
Ve bir ifade yerine hemen farklı tipte fonksiyonlar yazmak mümkün müdür? Ve eğer öyleyse, algoritma ne olurdu?
düzeltildi, argüman eklendi, global kapsama taşındı, şimdi bu argümanın diğer fonksiyonlarda girdi olarak kullanıldığına dair bir uyarı veriyor
biletin üzerine yaz, martin ile son siparişten çalış
ve o zaman 'count' bildiriminin nasıl kaldırılacağı, global bildirimi satırda gizler ...
olması gerektiği gibi çalışmasını sağlamak ilginç.
Şimdiye kadar, test cihazının sonuçlarına göre, bir yerde oldukça iyi bir çalışma veriyor, bir yerde hemen "Uzman Danışmanda aşılmaz hatalar"
Selamlar.
Şöyle bir girişe rastladım:
Yani, burada koşullu if ifadesi yerine hemen bool türünde bir ticaret işlevi yazılmıştır. Böyle bir gösterimin şuna eşdeğer olduğunu doğru anlıyor muyum:
if ( OrderSelect (bilet, SELECT_BY_TICKET )) ==true { OrderModify (ticket, OrderOpenPrice (), SL, TP, 0} ; ?
Hem yardıma hem de ders kitabına baktım - bu formatın bir kaydını bulamadım.
Ve bir ifade yerine hemen farklı türde fonksiyonlar yazmak mümkün müdür? Ve eğer öyleyse, algoritma ne olurdu?
Bunun gibi if ( OrderSelect (ticket, SELECT_BY_TICKET )) ==true { OrderModify (ticket, OrderOpenPrice (), SL, TP, 0} ; çalışmaz.Koşul parantezlerin dışına atılamaz.
Ve bunun gibi if ( OrderSelect (ticket, SELECT_BY_TICKET ) ==true) { OrderModify (ticket, OrderOpenPrice (), SL, TP, 0} ; yapabilirsiniz.
Bunun gibi if ( OrderSelect (ticket, SELECT_BY_TICKET )) ==true { OrderModify (ticket, OrderOpenPrice (), SL, TP, 0} ; çalışmaz.Koşul parantezlerin dışına atılamaz.
Ve bunun gibi if ( OrderSelect (ticket, SELECT_BY_TICKET ) ==true) { OrderModify (ticket, OrderOpenPrice (), SL, TP, 0} ; yapabilirsiniz.
Düzeltilmiş halini gösterin, aksi takdirde kod olmadan falcılık elde edilir.
TAMAM.
Elinden geleni yapmış gibi görünüyor. Açıklama yapıldı. Amaç, neden istediğiniz gibi çalışmadığını anlamaktır.
//| ОТЛОЖКИ.mq4 |
//+------------------------------------------------------------------+
extern double StopLoss = 1000 ; //Стоплосс ордера
extern double TakeProfit = 1500 ; //Тейкпрофит ордера
extern double TrailingStop = 1000 ; // трал
extern int Delta = 100 ; //Расстояние от цены для установки ордера
extern double LOT = 0.1 ; //Объём позиции
extern int Magic = 200 ;
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
if (TrailingStop!= 0 ) Trailing();
//ИНДИКАТОР RSI
double RSI0= iRSI ( NULL , 0 , 5 , PRICE_CLOSE , 0 );
double RSI1= iRSI ( NULL , 0 , 5 , PRICE_CLOSE , 1 );
int b,s,p,res;
double BuyPrice= Ask +Delta* Point ;
double SellPrice= Bid -Delta* Point ;
for ( int i= 0 ; i< OrdersTotal (); i++)
{
if ( OrderSelect (i, SELECT_BY_POS )== true )
{
if ( OrderSymbol ()!= Symbol () || OrderMagicNumber ()!=Magic) continue ;
if ( OrderType ()== OP_BUY || OrderType ()== OP_SELL ) p++;
if ( OrderType ()== OP_BUYSTOP ) b++;
if ( OrderType ()== OP_SELLSTOP ) s++;
}
}
double SL,TP;
//---- buy stop
if (RSI0> 50 &&RSI1< 50 )
{
res= OrderSend ( Symbol (), OP_BUYSTOP ,LOT,BuyPrice, 0 ,BuyPrice-StopLoss* Point ,BuyPrice+TakeProfit* Point , "ОТЛОЖКИ" ,Magic, OP_SELLSTOP ,Blue);
}
//---- sell stop
if (RSI0< 50 &&RSI1> 50 )
{
res= OrderSend ( Symbol (), OP_SELLSTOP ,LOT,SellPrice, 0 ,SellPrice+StopLoss* Point ,SellPrice-TakeProfit* Point , "ОТЛОЖКИ" ,Magic, OP_BUYSTOP ,Red );
}
//---- buy stop делете
if (RSI0< 50 &&RSI1> 50 )
{
OrderDelete ( OrderTicket ());
}
//---- sell stop делете
if (RSI0> 50 &&RSI1< 50 )
{
OrderDelete ( OrderTicket ());
}
//----
return ( 0 );
}
//--------------------------------------------------------------------
//---------ФУНКЦИЯ ТРАЛА----------------------------------------------
//--------------------------------------------------------------------
void Trailing()
{
for ( int i= 0 ; i< OrdersTotal (); i++)
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
if ( OrderSymbol ()== Symbol ()|| OrderMagicNumber ()==Magic)
if ( OrderType ()== OP_BUY )
{
if (TrailingStop> 0 )
{
if ( Bid - OrderOpenPrice ()>TrailingStop)
{
if ( OrderStopLoss ()< Bid -TrailingStop)
{
OrderModify ( OrderTicket (), OrderOpenPrice (), Bid -TrailingStop, OrderTakeProfit (), 0 ,Green);
}
}
}
}
if ( OrderType ()== OP_SELL )
{
if (TrailingStop> 0 )
{
if (( OrderOpenPrice ()- Ask )>TrailingStop)
{
if (( OrderStopLoss ()>( Ask +TrailingStop)) || ( OrderStopLoss ()== 0 ))
{
OrderModify ( OrderTicket (), OrderOpenPrice (), Ask +TrailingStop, OrderTakeProfit (), 0 ,Red);
}
}
}
}
}
}
//+------------------------------------------------------------------------------------+
//+------------------------------------------------------------------------------------+--------------------------------------------------------------------+
açılmamış siparişin biletini nasıl aldınız?
{
if ( OrderSelect (i, SELECT_BY_POS )== true )
{
if ( OrderSymbol ()!= Symbol () || OrderMagicNumber ()!=Magic) continue ;
if ( OrderType ()== OP_BUY || OrderType ()== OP_SELL ) p++;
if ( OrderType ()== OP_BUYSTOP )
if (сигнал_bue) OrderDelete ( OrderTicket ());
else b++;
if ( OrderType ()== OP_SELLSTOP )
if (сигнал_sell) OrderDelete ( OrderTicket ());
else s++;
}
}
değil mi onu oraya ekleyemem
{
if ( OrderSelect (i, SELECT_BY_POS )== true )
{
if ( OrderSymbol ()!= Symbol () || OrderMagicNumber ()!=Magic) continue ;
if ( OrderType ()== OP_BUY || OrderType ()== OP_SELL ) p++;
if ( OrderType ()== OP_BUYSTOP )
if (сигнал_bue) OrderDelete ( OrderTicket ());
else b++;
if ( OrderType ()== OP_SELLSTOP )
if (сигнал_sell) OrderDelete ( OrderTicket ());
else s++;
}
}