С праздником !
небольшая полезняшка вам в помощь: скрипт закрывает позицию по инструменту (все позиции), но только при наличии должного (покрывающего выплаченные спреды) профита
можно повесить на хоткей или запускать из менюшек.
используя скрипт торговать будете более в свою пользу чем в карман DC
#property copyright "Maxim Kuznetsov (c) 2024" #property link "https://luxtrade.unaux.com" #property version "1.00" #include <fxsaber/MT4Orders.mqh> #define ticket_t ulong #include <nektomk/Algo.mqh> void OnStart() { int total=OrdersTotal(); ticket_t COLLECT[]; ArrayResize(COLLECT,0,total/2); double totalProfit=0.0; for(int pos=total-1;pos>=0;pos--) { if (!OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)) { Sleep(20); if (!OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)) { Alert("OrderSelect failed - pls.restart"); return; } } if (OrderCloseTime()!=0) continue; if (OrderSymbol()!=_Symbol) continue; int type=OrderType(); if (type!=OP_BUY && type!=OP_SELL) continue; totalProfit=OrderProfit()+OrderSwap()+OrderCommission()*2; double spreadLoss=OrderLots()*SymbolInfoInteger(_Symbol,SYMBOL_SPREAD)*SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE); totalProfit-=spreadLoss*3; ArrayPush(COLLECT,(ticket_t)OrderTicket()); } PrintFormat("TotalProfit=%f",totalProfit); if (totalProfit>0.0) { for(int pass=0;pass<10;pass++) { bool haveError=false; for(int pos=ArraySize(COLLECT)-1;pos>=0;pos--) { ticket_t ticket=COLLECT[pos]; if (ticket==0) continue; if (!OrderSelect(ticket,SELECT_BY_TICKET)) { Sleep(20); if (!OrderSelect(ticket,SELECT_BY_TICKET)) { haveError=true; } } if (OrderCloseTime()!=0) continue; if (!OrderClose(ticket,OrderLots(),OrderClosePrice(),0)) { haveError=true; } else { COLLECT[pos]=0; } } if (!haveError) break; } } }
Файлы: