// it is important to enter the market correctly, // but it is more important to exit it correctly... for( cnt =0; cnt < total ; cnt ++){OrderSelect( cnt , SELECT_BY_POS , MODE_TRADES );if(OrderType()<=OP_SELL&&// check for opened position OrderSymbol()==Symbol())// check for symbol{OrderSend(if(OrderType()==OP_BUY)// long position is opened{// should it be closed?if( ma_close < ma_open && ma_close_pr > ma_open_pr && low_n < low ){OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);// close positionreturn(0);// exit}// check for trailing stopif( TrailingStop >0){if(Bid-OrderOpenPrice()>Point* TrailingStop ){if(OrderStopLoss()<Bid-Point* TrailingStop ){OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point* TrailingStop ,OrderTakeProfit(),0,Green);return(0);}}}}else// go to short position{// should it be closed?if( ma_close > ma_open && ma_close_pr < ma_open_pr && high_n > high ){OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);// close positionreturn(0);// exit}// check for trailing stopif( TrailingStop >0){if((OrderOpenPrice()-Ask)>(Point* TrailingStop )){if((OrderStopLoss()>(Ask+Point* TrailingStop ))||(OrderStopLoss()==0)){OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point* TrailingStop ,OrderTakeProfit(),0,Red);return(0);}}}}}}return(0);}// the end.
MQL5.com web sitesine giriş yapmak için çerezlerin kullanımına izin vermelisiniz.
Lütfen tarayıcınızda gerekli ayarı etkinleştirin, aksi takdirde giriş yapamazsınız.
Hesabınıza giriş yaptınız. İki faktörlü kimlik doğrulama devre dışı bırakıldı. Yeniden kurup yeni bir QR kodu tarayın veya iki faktörlü kimlik doğrulama devre dışıyken devam edin.
Teşekkür ederim! Burada buldum, belki birinin ihtiyacı olur. Ben kaseyi bitireceğim :)
Dizi çift ise ve int gerekliyse? doğru mu anladım
Numara. Soketler aracılığıyla diğer uygulamalarla bir sürü MT4 yazıyorum. Soket işlevi bir dizi int döndürür:
Bu dll'yi uzmana aktarıyorum. Ancak bu işlevi çağırmak için bunu Expert Advisor'da bildirmeniz gerekir:
Yukarıda yazılan bildirim büyük olasılıkla doğru değil - dll'den gelen işlev bir dizi döndürür ve EA'da bildirilen işlev bir int döndürür.
Tek bir sayı değil bir dizi döndürmesi için Expert Advisor'da nasıl bildirilir?
Kim bilir?
Sayıyı yuvarlamadan belirtilen kesinlik biçiminde bir çift değişken nasıl belirlenir, örneğin Bid=1.3988, Bid=1.398 olarak belirtin ???
Kim bilir?
Sayıyı yuvarlamadan belirtilen kesinlik biçiminde bir çift değişken nasıl belirlenir, örneğin Bid=1.3988, Bid=1,398 olarak belirtin ???
bunun gibi?
Cevabın tamamı burada: https://forum.mql4.com/ru/25945
Bana yardım et lütfen...
'\end_of_program' - dengesiz sol parantez
extern double Lots = 0.1; extern int TrailingStop=0; extern string symbol="GBPUSD"; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { double ma_close,ma_close_pr,ma_open,ma_open_pr; double spread,sl_buy,sl_sell,high,high_n,low,low_n; int cnt, ticket, total; if(Bars<55) { Print("bars less than 55"); return(0); } // to simplify the coding and speed up access // data are put into internal variables ma_close=iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,1); ma_close_pr=iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,2); ma_open=iMA(NULL,0,5,0,MODE_EMA,PRICE_OPEN,1); ma_open_pr=iMA(NULL,0,5,0,MODE_EMA,PRICE_OPEN,2); spread=MarketInfo(symbol,MODE_SPREAD); sl_buy=iLow(NULL,0,1)-spread*Point; sl_sell=iHigh(NULL,0,1)+spread*Point; high=iHigh(NULL,0,1); high_n=iHigh(NULL,0,0); low=iLow(NULL,0,1); low_n=iLow(NULL,0,0); //---- total=OrdersTotal(); if(total<1) { // no opened orders identified if(AccountFreeMargin()<(1000*Lots)) { Print("We have no money. Free Margin = ", AccountFreeMargin()); return(0); } // check for long position (BUY) possibility if(ma_close>ma_open && ma_close_pr<ma_open_pr && high_n>high) { ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,sl_buy,0,"FXJEDDI_MTF:Buy",16384,0,Lime); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice()); } else Print("Error opening BUY order : ",GetLastError()); return(0); } // check for short position (SELL) possibility if(ma_close<ma_open && ma_close_pr>ma_open_pr && low_n<low) { ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,sl_sell,0,"FXJEDDI_MTF:Sell",16384,0,Red); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice()); } else Print("Error opening SELL order : ",GetLastError()); return(0); } for(int i = 0; i < OrdersTotal(); i++) { // выбор одера if(OrderSelect(i, SELECT_BY_POS) == false) continue; // not current symbol if(OrderSymbol() != Symbol()) continue; } if(OrderType() == OP_SELL) { //при профите >20 pips добавится или докупится ... if(OrderProfit()>20) OrderSend(Symbol(),OP_SELL,Lots,Bid,3,sl_sell,0,"FXJEDDI:Sell",16384,0,Red); } if(OrderType() == OP_BUY) { //при профите >20 pips добавится или докупится ... if(OrderProfit()>20) OrderSend( (Symbol(),OP_BUY,Lots,Ask,3,sl_buy,0,"FXJEDDI:Buy",16384,0,Lime); } return(0); }Sorun nedir?Bölüm 2.
Necron скобку где то не закрыл, ищи...
Kodu doğru yerleştirdiniz mi?