Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Le code source est disponible ici - http://forexsystems.ru/phpBB/viewtopic.php?p=4389#4389
Des choses ajoutées, des choses corrigées...
//+------------------------------------------------------------------+ //| Redefine OrderClose() function | //+------------------------------------------------------------------+ bool funt_OrderClose( int ticket, double lots, double price, int slippage, color Color=CLR_NONE) { if (CorrectClosePrice(TradeOrdersArray[ticket,0],price,myCurrentTime))&&((TradeOrdersArray[ticket,3]=myOP_BUY)||(TradeOrdersArray[ticket,3]=myOP_BUY)) { ClosedOrdersArray[myHistoryTotal]=TradeOrdersArray[ticket,0];// записали иструмент ClosedOrdersArray[myHistoryTotal,1]=history_pool;// записали номер в истории ClosedOrdersArray[myHistoryTotal,2]=TradeOrdersArray[ticket,2];// записали номер тикета у брокера ClosedOrdersArray[myHistoryTotal,3]=TradeOrdersArray[ticket,3];// записали тип ордера ClosedOrdersArray[myHistoryTotal,4]=TradeOrdersArray[ticket,4];// записали размер ордера // ClosedOrdersArray[myHistoryTotal,4]=lots;//??? альтернативный вариант, надо доработать ClosedOrdersArray[myHistoryTotal,5]=TradeOrdersArray[ticket,5];// записали цену открытия ClosedOrdersArray[myHistoryTotal,6]=TradeOrdersArray[ticket,6];// записали проскальзывание в пунктах // ClosedOrdersArray[myHistoryTotal,6]=;slippage //??? альтернативный вариант, можно еще MathCeil (double (slippage*MathRand()/32767)) ClosedOrdersArray[myHistoryTotal,7]=TradeOrdersArray[ticket,7];// записали stoploss ClosedOrdersArray[myHistoryTotal,8]=TradeOrdersArray[ticket,8];// записали takeprofit ClosedOrdersArray[myHistoryTotal,9]=TradeOrdersArray[ticket,9];// записали комментарии ClosedOrdersArray[myHistoryTotal,10]=TradeOrdersArray[ticket,10];// записали MagicNumber ClosedOrdersArray[myHistoryTotal,11]=TradeOrdersArray[ticket,11];// записали дату открытия ордера ClosedOrdersArray[myHistoryTotal,12]=myCurrentTime;// записали дату закрытия ордера ClosedOrdersArray[myHistoryTotal,13]=myCurrentPrice(TradeOrdersArray[ticket,3]);// записали дату закрытия ордера ClosedOrdersArray[myHistoryTotal,14]=TradeOrdersArray[ticket,14];// записали профит по закрытому ордеру //------------------------------------------------------------------------------- // здесь блок по удалению ордера из массива TradeOrdersArray[][] myOrdersTotal--;// уменьшили счетчик открытых ордеров pool_pos--;// уменьшили счетчик в списке терминала //------------------------------------------------------------------------------- DrawCloseArrowOnChart(TradeOrdersArray[ticket,0],myCurrentTime,price,Color); DeltaBalance=DeltaBalance+ClosedOrdersArray[myHistoryTotal,14];// накапливаем изменени баланса на текущем баре DeltaProfit=DeltaProfit-ClosedOrdersArray[myHistoryTotal,14];// накапливаем изменени профита на текущем баре myHistoryTotal++; return(true); } else return(false); }Je ne rate pas mon...
Désolé, je trouve rarement le temps de consulter le forum - charge de travail très lourde.
Dès que la pression sera retombée après la sortie de MT4, nous reprendrons les discussions.
erreur - il ne suffit pas de supprimer un ordre pour le faire
myOrdersTotal--;// уменьшили счетчик открытых ордеров pool_pos--;// уменьшили счетчик в списке терминалаRenat,
OK.
Quant à l'idée, nous devrions organiser une boucle pour déplacer les commandes au début du tableau et, probablement, ArrayResize(). S'il s'agissait de Collections comme en Pascal, tout cela se ferait par une seule opération. Peut-être y a-t-il quelqu'un qui aimerait le faire ?
C'est rapide et facile...
Vous n'avez pas besoin de les écrire vous-même.
Pourquoi ne pas supprimer les commandes, mais cocher la case indiquant qu'elles ont été supprimées ?
//+------------------------------------------------------------------+ //| Redefine OrderClose() function | //+------------------------------------------------------------------+ bool funt_OrderClose( int ticket, double lots, double price, int slippage, color Color=CLR_NONE) { int i,k,pointer_pool; if (CorrectClosePrice(TradeOrdersArray[ticket,0],price,myCurrentTime))&&((TradeOrdersArray[ticket,3]=myOP_BUY)||(TradeOrdersArray[ticket,3]=myOP_BUY)) { ClosedOrdersArray[myHistoryTotal]=TradeOrdersArray[ticket,0];// записали иструмент ClosedOrdersArray[myHistoryTotal,1]=history_pool;// записали номер в истории ClosedOrdersArray[myHistoryTotal,2]=TradeOrdersArray[ticket,2];// записали номер тикета у брокера ClosedOrdersArray[myHistoryTotal,3]=TradeOrdersArray[ticket,3];// записали тип ордера ClosedOrdersArray[myHistoryTotal,4]=TradeOrdersArray[ticket,4];// записали размер ордера // ClosedOrdersArray[myHistoryTotal,4]=lots;//??? альтернативный вариант, надо доработать ClosedOrdersArray[myHistoryTotal,5]=TradeOrdersArray[ticket,5];// записали цену открытия ClosedOrdersArray[myHistoryTotal,6]=TradeOrdersArray[ticket,6];// записали проскальзывание в пунктах // ClosedOrdersArray[myHistoryTotal,6]=;slippage //??? альтернативный вариант, можно еще MathCeil (double (slippage*MathRand()/32767)) ClosedOrdersArray[myHistoryTotal,7]=TradeOrdersArray[ticket,7];// записали stoploss ClosedOrdersArray[myHistoryTotal,8]=TradeOrdersArray[ticket,8];// записали takeprofit ClosedOrdersArray[myHistoryTotal,9]=TradeOrdersArray[ticket,9];// записали комментарии ClosedOrdersArray[myHistoryTotal,10]=TradeOrdersArray[ticket,10];// записали MagicNumber ClosedOrdersArray[myHistoryTotal,11]=TradeOrdersArray[ticket,11];// записали дату открытия ордера ClosedOrdersArray[myHistoryTotal,12]=myCurrentTime;// записали дату закрытия ордера ClosedOrdersArray[myHistoryTotal,13]=myCurrentPrice(TradeOrdersArray[ticket,3]);// записали дату закрытия ордера ClosedOrdersArray[myHistoryTotal,14]=TradeOrdersArray[ticket,14];// записали профит по закрытому ордеру //------------------------------------------------------------------------------- // здесь блок по удалению ордера из массива TradeOrdersArray[][] i=0; while (!TradeOrdersArray[i,1]==ticket) {i++}; pointer_pool=i; // нашли ордер по списку терминала for (i=pointer_pool;i<=pool_pos;i++) // перемещение ордеров от конца к удаляемому ордеру (фактически мы его стираем) { for (k=0;k<=14;k++) {TradeOrdersArray[i,k]=TradeOrdersArray[i+1,k]}// копирование параметров ордера } for (k=0;k<=14;k++) { TradeOrdersArray[myOrdersTotal,k]=NULL; // скорее всего некорректное "зануление" } myOrdersTotal--;// уменьшили счетчик открытых ордеров pool_pos--;// уменьшили счетчик в списке терминала // ArrayResize(TradeOrdersArray,pool_pos) ; // не неуверен, что эта процедура не приведет к краху массива //------------------------------------------------------------------------------- DrawCloseArrowOnChart(TradeOrdersArray[ticket,0],myCurrentTime,price,Color); DeltaBalance=DeltaBalance+ClosedOrdersArray[myHistoryTotal,14];// накапливаем изменени баланса на текущем баре DeltaProfit=DeltaProfit-ClosedOrdersArray[myHistoryTotal,14];// накапливаем изменени профита на текущем баре myHistoryTotal++; return(true); } else return(false); }En principe, la fonction DeleteOrder() peut être dérivée d'ici. Le nombre d'erreurs s'accumule...
Le code source est au même endroit - http://forexsystems.ru/phpBB/viewtopic.php?p=4574#4574
L'auteur tient à remercier tout le monde pour leur aide dans la rédaction de ce snag... :)