Originariamente Scritto da ;
Publi |
Publi |
Originariamente Scritto da ;
La mia più sincera gratitudine a lei, signore...
OK. 1. Voglio aprire 3 negoziazioni in 3 diversi grafici solo dopo aver verificato che non ci siano negoziazioni aperte al momento allora... 3. Quindi voglio aprire le stesse 3 negoziazioni nelle direzioni opposte. Codice inserito int Magic = ... int BuyCnt = 0; int SellCnt = 0; int cnt = OrdersTotal(); for (int i=0; i lt; cnt; i ) { if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue; if (OrderSymbol() != Symbol()) continue; if (OrderMagicNumber() != Magic) continua; tipo int = TipoOrdine(); if (tipo == OP_BUY) BuyCnt ; if (tipo == OP_SELL) SellCnt ; } if (BuyCnt gt; 0 || SellCnt gt; 0) return;/OrderSend(OP_BUY, .../OrderSend(OP_SELL, ... Esegui questo codice su 3 diversi grafici di cui hai bisogno. 2. Voglio controllare il PL e se è maggiore di 0, chiuderà tutto aperto e ordini pendenti Codice inserito if (AccountProfit() gt; 0) { DeleteOrders(); CloseOrders(); } void CloseOrders() { int cnt = OrdersTotal(); for (int i=cnt-1; i gt;= 0 ; i--) { if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue; int type = OrderType(); if (type == OP_BUY) { RefreshRates(); OrderClose(OrderTicket(), OrderLots(), MarketInfo (OrderSymbol(), MODE_BID), 3); } if (type == OP_SELL) { RefreshRates(); OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 3); } } } void DeleteOrders() { int cnt = OrdersTotal(); for (int i=cnt-1; i gt;= 0; i--) { if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue; int type = OrderType( ); if (type == OP_BUYSTOP || type == OP_SELLSTOP || type == OP_BUYLIMIT || type == OP_SELLLIMIT) { OrderDelete(OrderTicket()); } } }Originariamente Scritto da ;
Questo è un thread molto istruttivo..Per favore non fermarti..Continua a insegnare a noi che siamo nuovi a questa programmazione... Come faccio a codificare questa procedura??? 1. Voglio aprire 3 negoziazioni in 3 diversi grafici solo dopo aver verificato che non ci siano negoziazioni aperte al momento allora ... 2. Voglio controllare il PL e se è maggiore di 0, chiuderà tutto aperto e ordini in attesa. 3. Quindi voglio aprire gli stessi 3 mestieri nelle direzioni opposte. Grazie
Come chiudere tutti gli ordini a mercato: Inserted Code int Slippage = 3; void ChiudiOrdini() { int cnt = TotaleOrdini(); for (int i=cnt-1; igt;=0; i--) { if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;/if (OrderSymbol() != Symbol()) continue;/if (OrderMagicNumber() != Magic) continua; if (OrderType() == OP_BUY) OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), Slippage); if (OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), Slippage); } } Come chiudere tutti gli ordini di tipo predefinito: Codice inserito void CloseOrders(int type) { int cnt = OrdersTotal(); for (int i=cnt-1; igt;=0; i--) { if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;/if (OrderSymbol() != Symbol()) continue;/if (OrderMagicNumber() != Magic) continua; if (OrderType() != tipo) continua; if (OrderType() == OP_BUY) OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), Slippage); if (OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), Slippage); } }
Ottieni l'OpenTime dell'ultimo ordine con il tipo predefinito. La funzione effettua una ricerca delle operazioni aperte e della cronologia. -1 significa che non ci sono ordini trovati. Codice inserito datetime GetLastOpenTime(int type) { datetime tm = -1; int cnt = OrdersTotal(); for (int i=0; ilt;cnt; i ) { if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continuare;/Facoltativo/if (OrderSymbol() != Symbol()) continue;/if (OrderMagicNumber() != Magic) continua; if (OrderType() != tipo) continua; tm = MathMax(tm, OrderOpenTime()); } cnt = OrdersHistoryTotal(); for (i=0; ilt;cnt; i ) { if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) continua;/Facoltativo/if (OrderSymbol() != Symbol()) continue;/if (OrderMagicNumber() != Magic) continua; if (OrderType() != tipo) continua; tm = MathMax(tm, OrderOpenTime()); } ritorno (tm); }
Grazie RickD per quello che stai dando qui. Proprio come i membri di FF basta colpire il primo prezzo della lotteria. Sei un vero tesoro qui Per favore continua questo thread Dio ti benedica