// 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.
ありがとうございました。ここに もう少しありました。もしかしたら誰かが必要としているかもしれません。グレイルを完成させに行く:)
Если массив double а нужен int? Я правильно понял?
いいえ、私はMT4がソケットを介して他のアプリケーションとリンクするように書いています。Socket関数はint型の配列を返します。
このDLLをEAにインポートしています。ただし、この関数を呼び出すには、Expert Advisor で宣言する必要があります。
上記の宣言はおそらく正しくありません。DLL の関数は配列を返し、Expert Advisor で宣言された関数は 1 つの int を返します。
Expert Advisorで、単一の数値ではなく、配列を返すように宣言するにはどうすればよいですか?
誰がわかる?
例えば、Bid=1.3988をBid=1.398と指定するように、数値を丸めずに、指定した精度形式で変数doubleを指定するにはどうしたらよいでしょうか?
Кто знает?
Как указать переменную double в указаном формате точности без округление числа, к примеру Bid=1.3988 указать как Bid=1.398 ???
このように?
すべて解決、答えはここにある https://forum.mql4.com/ru/25945
助けてください・・・。
\プログラム終了」 - アンバランスな左括弧
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); }どうしたんですか?第2部
Necron скобку где то не закрыл, ищи...
正しいコードで追記を行いましたか?