[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 414
J'importe cette dll dans EA. Cependant, pour appeler cette fonction, elle doit être déclarée dans l'Expert Advisor :
int SendInfoBySocket(int str[],int len,int port);
La déclaration ci-dessus est très probablement incorrecte - une option de la dll renvoie un tableau, alors qu'une fonction déclarée dans un conseiller expert renvoie un seul int.
Comment le déclarer dans un Expert Advisor pour qu'il renvoie un tableau et non un seul nombre ?
Comment spécifier une variable double dans le format de précision spécifié sans arrondir le nombre, par exemple spécifier Bid=1.3988 comme Bid=1.398 ? ???
// 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.
Merci ! J'en ai trouvé d'autres ici, peut-être que quelqu'un en aura besoin. Je vais finir le graal :)
Если массив double а нужен int? Я правильно понял?
Non. J'écris le lien MT4 vers d'autres applications via des sockets. La fonction Socket renvoie un tableau d'int :
J'importe cette dll dans EA. Cependant, pour appeler cette fonction, elle doit être déclarée dans l'Expert Advisor :
La déclaration ci-dessus est très probablement incorrecte - une option de la dll renvoie un tableau, alors qu'une fonction déclarée dans un conseiller expert renvoie un seul int.
Comment le déclarer dans un Expert Advisor pour qu'il renvoie un tableau et non un seul nombre ?
Qui sait ?
Comment spécifier une variable double dans le format de précision spécifié sans arrondir le nombre, par exemple spécifier Bid=1.3988 comme Bid=1.398 ? ???
Кто знает?
Как указать переменную double в указаном формате точности без округление числа, к примеру Bid=1.3988 указать как Bid=1.398 ???
comme ça ?
Tout est réglé, la réponse est ici : https://forum.mql4.com/ru/25945
S'il vous plaît, aidez-moi...
\Žfin_du_programme' - parenthèse gauche déséquilibrée
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); }Qu'est-ce qu'il y a ?Partie 2.
Necron скобку где то не закрыл, ищи...
Avez-vous mis les addendums dans le bon code ?