// 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中声明的函数将返回一个单一的int。
如何在专家顾问中声明它,使其返回一个数组,而不是一个单一的数字?
谁知道呢?
如何以指定的精度格式指定一个可变的双数,而不对数字进行四舍五入,例如指定Bid=1.3988为Bid=1.398?
Кто знает?
Как указать переменную double в указаном формате точности без округление числа, к примеру Bid=1.3988 указать как Bid=1.398 ???
像这样?
全部整理好了,答案在这里:https://forum.mql4.com/ru/25945
请帮助...
\end_of_program' - 不平衡的左括号
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); }怎么了?第二部分。
Necron скобку где то не закрыл, ищи...
你把附录放在正确的代码中了吗?