//+------------------------------------------------------------------+ //| TradeSystem.mq4 | //| Copyright © 2007 Ñåðãååâ Àëåêñåé | //| los@we.kherson.ua | //+------------------------------------------------------------------+ #property copyright "Copyright © 2007, Ñåðãååâ Àëåêñåé " #property link "mailto: los@we.kherson.ua" #include <Traling.mqh> #include <stderror.mqh> #include <stdlib.mqh> double MinLot=0.1; //Ñàìûé ìàëåíüêèé ëîò, ñ êîòîðîãî íà÷èíàåò òîðãîâëþ ëþáîé ïðîöåññ void ProcessAvgLim(int SignalID, int SysID, color ClrBuy, color ClrSell) { // double lots = AccountFreeMargin()*0.1*0.00001; //íà÷àëüíûé ëîò = 100 ó.å. ïðè 100000 ó.å. (ñîîòíîøåíèå 1/1000) double lots = AccountFreeMargin()*0.1*0.00001; //íà÷àëüíûé ëîò lots = NormalizeDouble(lots, LotDigit); //îêðóãëèëè äî çíàêîâ ìèíèìàëüíîãî ëîòà if (MinLot>lots) lots = MinLot;// åñëè òåêóùéè áàëàíñ ìåíüøå ìèíèìàëüíîãî double price = 0.0; int total, i, cbuy, csell, Signal, pos; //---- òåïåðü äëÿ íîâûõ ïîçèöèé Signal = CheckSignal(true, SignalID); if (Signal == -1) return; // åñëè íåò ñèãíàëà òî ïðîñòî íè÷åãî íå äåëàåì //----- äëÿ ñîâåðøåíèÿ ïîêóïêè if(Signal == OP_BUY) { cbuy = CountAllOrders(OP_BUY, SysID); if (cbuy<=0) //åñëè íåò, òî îòêðûâàåì { //èíà÷å çà÷èñòèëè îðäåðà LIMIT total = CreatTicketArray(OP_BUYLIMIT, SysID); for (i=1; i<=total; i++) OrderDelete(Ticket[i], Green); //îòêðûâàåì îðäåð OrderSend(Symbol(), OP_BUY, lots, Ask, 3, Ask-SysPar[SysID][_SL]*Point, Ask+SysPar[SysID][_TP]*Point, SysParName[SysID], SysID, 0, ClrBuy); } else // èíà÷å äîëèâàåì { // íàõîäèì ñàìûé ïåðâûé îðäåð total = CreatTicketArray(OP_BUY, SysID); OrderSelect(Ticket[1], SELECT_BY_TICKET); price=OrderOpenPrice(); pos = 1; for (i=2; i<=total; i++) { OrderSelect(Ticket[i], SELECT_BY_TICKET); if (OrderOpenPrice()>price) { price=OrderOpenPrice(); pos = i; } } OrderSelect(Ticket[pos], SELECT_BY_TICKET); lots = OrderLots(); lots = NormalizeDouble(lots, LotDigit); if (OrderOpenPrice()<Ask-100*Point) OrderSend(Symbol(), OP_BUY, lots, Ask, 2, Ask-SysPar[SysID][_SL]*Point, Ask+SysPar[SysID][_TP]*Point, SysParName[SysID], SysID, 0, ClrBuy); } } //----- äëÿ ñîâåðøåíèÿ ïðîäàæè àíàëîãè÷íî if(Signal == OP_SELL) { csell = CountAllOrders(OP_SELL, SysID); if (csell<=0) //åñëè íåò, òî îòêðûâàåì { total = CreatTicketArray(OP_SELLLIMIT, SysID); for (i=1; i<=total; i++) OrderDelete(Ticket[i], Red); OrderSend(Symbol(), OP_SELL, lots, Bid, 3, Bid+SysPar[SysID][_SL]*Point, Bid-SysPar[SysID][_TP]*Point, SysParName[SysID], SysID, 0, ClrSell); } else // èíà÷å äîëèâàåì { // íàõîäèì ñàìûé ïåðâûé îðäåð total = CreatTicketArray(OP_SELL, SysID); OrderSelect(Ticket[1], SELECT_BY_TICKET); price=OrderOpenPrice(); pos = 1; for (i=2; i<=total; i++) { OrderSelect(Ticket[i], SELECT_BY_TICKET); if (OrderOpenPrice()<price) { price=OrderOpenPrice(); pos = i; } } OrderSelect(Ticket[pos], SELECT_BY_TICKET); lots = OrderLots(); lots = NormalizeDouble(lots, LotDigit); if (OrderOpenPrice()>Bid+100*Point) OrderSend(Symbol(), OP_SELL, lots, Bid, 2, Bid+SysPar[SysID][_SL]*Point, Bid-SysPar[SysID][_TP]*Point, SysParName[SysID], SysID, 0, ClrBuy); } } } void ProcessAvgStop(int SignalID, int SysID, color ClrBuy, color ClrSell) { // double lots = AccountFreeMargin()*0.1*0.00001; //íà÷àëüíûé ëîò = 100 ó.å. ïðè 100000 ó.å. (ñîîòíîøåíèå 1/1000) double lots = AccountFreeMargin()*0.1*0.00001; //íà÷àëüíûé ëîò lots = NormalizeDouble(lots, LotDigit); //îêðóãëèëè äî çíàêîâ ìèíèìàëüíîãî ëîòà if (MinLot>lots) lots = MinLot;// åñëè òåêóùèé ëîò ìåíüøå ìèíèìàëüíîãî äîïóñòèìîãî // lots = MinLot; double price = 0.0; int total, i, Signal, pos; //---- òåïåðü äëÿ íîâûõ ïîçèöèé Signal = CheckSignal(true, SignalID); // if (Signal == -1) return; // åñëè íåò ñèãíàëà òî ïðîñòî íè÷åãî íå äåëàåì // if (Signal == OP_BUY) { total = CreatTicketArray(OP_BUY, SysID); if (total<=0) //---- åñëè íåò, òî ïîêóïàåì OrderSend(Symbol(), OP_BUY, lots, Ask, 2, Ask-SysPar[SysID][_SL]*Point, Ask+SysPar[SysID][_TP]*Point, SysParName[SysID], SysID, 0, ClrBuy); else // èíà÷å äîëèâàåì { // íàõîäèì ñàìûé ïåðâûé îðäåð OrderSelect(Ticket[1], SELECT_BY_TICKET); price=OrderOpenPrice(); pos = 1; for (i=2; i<=total; i++) { OrderSelect(Ticket[i], SELECT_BY_TICKET); if (OrderOpenPrice()>price) { price=OrderOpenPrice(); pos = i; } } OrderSelect(Ticket[pos], SELECT_BY_TICKET); lots = OrderLots(); lots = NormalizeDouble(lots, LotDigit); if (OrderOpenPrice()<Ask-100*Point) OrderSend(Symbol(), OP_BUY, lots, Ask, 2, Ask-SysPar[SysID][_SL]*Point, Ask+SysPar[SysID][_TP]*Point, SysParName[SysID], SysID, 0, ClrBuy); } } //----- äëÿ ñîâåðøåíèÿ ïðîäàæè àíàëîãè÷íî // if(Signal == OP_SELL) { total = CreatTicketArray(OP_SELL, SysID); if (total<=0) //åñëè íåò, òî îòêðûâàåì OrderSend(Symbol(), OP_SELL, lots, Bid, 2, Bid+SysPar[SysID][_SL]*Point, Bid-SysPar[SysID][_TP]*Point, SysParName[SysID], SysID, 0, ClrSell); else // èíà÷å äîëèâàåì { // íàõîäèì ñàìûé ïåðâûé îðäåð OrderSelect(Ticket[1], SELECT_BY_TICKET); price=OrderOpenPrice(); pos = 1; for (i=2; i<=total; i++) { OrderSelect(Ticket[i], SELECT_BY_TICKET); if (OrderOpenPrice()<price) { price=OrderOpenPrice(); pos = i; } } OrderSelect(Ticket[pos], SELECT_BY_TICKET); lots = OrderLots(); lots = NormalizeDouble(lots, LotDigit); if (OrderOpenPrice()>Bid+100*Point) OrderSend(Symbol(), OP_SELL, lots, Bid, 2, Bid+SysPar[SysID][_SL]*Point, Bid-SysPar[SysID][_TP]*Point, SysParName[SysID], SysID, 0, ClrBuy); } } } void ProcessTurn(int SignalID, int SysID, color ClrBuy, color ClrSell) { // double lots = AccountFreeMargin()*0.1*0.00001; //íà÷àëüíûé ëîò = 100 ó.å. ïðè 100000 ó.å. (ñîîòíîøåíèå 1/1000) double lots = AccountFreeMargin()*0.1*0.00001; //íà÷àëüíûé ëîò lots = NormalizeDouble(lots, LotDigit); //îêðóãëèëè äî çíàêîâ ìèíèìàëüíîãî ëîòà if (MinLot>lots) lots = MinLot;// åñëè òåêóùèé ëîò ìåíüøå ìèíèìàëüíîãî int ticket, total, i, cbuy, csell, Signal; Signal = CheckSignal(false, SignalID);//---- ñíà÷àëà äëÿ îòêðûòûõ ïîçèöèé if(Signal != -1) CloseAllOrders(Signal, SysID, ClrBuy, ClrSell); cbuy = CountAllOrders(OP_BUY, SysID); csell = CountAllOrders(OP_SELL, SysID); //----çà÷èñòèëè îðäåðà STOP if (cbuy<=0) { total = CreatTicketArray(OP_SELLSTOP, SysID); for (i=1; i<=total; i++) OrderDelete(Ticket[i], ClrSell);} if (csell<=0) { total = CreatTicketArray(OP_BUYSTOP, SysID); for (i=1; i<=total; i++) OrderDelete(Ticket[i], ClrBuy);} Signal = CheckSignal(true, SignalID);//---- òåïåðü äëÿ íîâûõ ïîçèöèé if (Signal == -1) return; // åñëè íåò ñèãíàëà òî ïðîñòî íè÷åãî íå äåëàåì if(Signal==OP_BUY)//----- äëÿ ñîâåðøåíèÿ ïîêóïêè { if (cbuy>0) return; //---- åñëè åñòü óæå îòêðûòûé íà ïîêóïêó, òî íè÷åãî íå äåëàåì //---- èíà÷å çà÷èñòèëè îðäåðà STOP total = CreatTicketArray(OP_SELLSTOP, SysID); for (i=1; i<=total; i++) OrderDelete(Ticket[i], Red); OrderSend(Symbol(), OP_BUY, lots, Ask, 3, Ask-SysPar[SysID][_SL]*Point, Ask+SysPar[SysID][_TP]*Point, SysParName[SysID], SysID, 0, ClrBuy); OrderSend(Symbol(), OP_SELLSTOP, lots, Ask-SysPar[SysID][_SL]*Point, 3, Ask, Ask-2*SysPar[SysID][_TP]*Point, SysParName[SysID], SysID, 0, ClrSell); return; } if(Signal==OP_SELL)//----- äëÿ ñîâåðøåíèÿ ïðîäàæè { if (csell>0) return; //---- åñëè åñòü óæå îòêðûòûé íà ïðîäàæó, òî íè÷åãî íå äåëàåì total = CreatTicketArray(OP_BUYSTOP, SysID); for (i=1; i<=total; i++) OrderDelete(Ticket[i], Red); OrderSend(Symbol(), OP_SELL, lots, Bid, 3, Bid+SysPar[SysID][_SL]*Point, Bid-SysPar[SysID][_TP]*Point, SysParName[SysID], SysID, 0, ClrSell); OrderSend(Symbol(), OP_BUYSTOP, lots, Bid+SysPar[SysID][_SL]*Point, 3, Bid, Bid+2*SysPar[SysID][_TP]*Point, SysParName[SysID], SysID, 0, ClrSell); return; } //---- } void ProcessSimple(int SignalID, int SysID, color ClrBuy, color ClrSell) { // double lots = AccountFreeMargin()*0.1*0.00001; //íà÷àëüíûé ëîò = 100 ó.å. ïðè 100000 ó.å. (ñîîòíîøåíèå 1/1000) double lots = AccountFreeMargin()*0.1*0.00001; //íà÷àëüíûé ëîò lots = NormalizeDouble(lots, LotDigit); //îêðóãëèëè äî çíàêîâ ìèíèìàëüíîãî ëîòà if (MinLot>lots) lots = MinLot;// åñëè òåêóùèé ëîò ìåíüøå ìèíèìàëüíîãî int ticket, total, i, cbuy, csell, Signal; //---- ñíà÷àëà äëÿ îòêðûòûõ ïîçèöèé Signal = CheckSignal(false, SignalID); if(Signal != -1) TryCloseAllOrders(Signal, SysID, ClrBuy, ClrSell); //---- òåïåðü äëÿ íîâûõ ïîçèöèé cbuy = CountAllOrders(OP_BUY, SysID); csell = CountAllOrders(OP_SELL, SysID); Signal = CheckSignal(true, SignalID); if (Signal == -1) return; // åñëè íåò ñèãíàëà òî ïðîñòî íè÷åãî íå äåëàåì //----- äëÿ ñîâåðøåíèÿ ïîêóïêè if(Signal == OP_BUY) { if (cbuy>0) return; //---- åñëè åñòü óæå îòêðûòûé íà ïîêóïêó, òî íè÷åãî íå äåëàåì //---- îòêðûâàåì îðäåð íà BUY ticket = OrderSend(Symbol(), OP_BUY, lots, Ask, 3, Ask-SysPar[SysID][_SL]*Point, Ask+SysPar[SysID][_TP]*Point, SysParName[SysID], SysID, 0, ClrBuy); if (ticket==-1) { i=GetLastError(); Print("error(",i,"): ",ErrorDescription(i));} return; } //----- äëÿ ñîâåðøåíèÿ ïðîäàæè if(Signal == OP_SELL) { if (csell>0) return; //---- åñëè åñòü óæå îòêðûòûé íà ïðîäàæó, òî íè÷åãî íå äåëàåì ticket = OrderSend(Symbol(), OP_SELL, lots, Bid, 3, Bid+SysPar[SysID][_SL]*Point, Bid-SysPar[SysID][_TP]*Point, SysParName[SysID], SysID, 0, ClrSell); if (ticket==-1) { i=GetLastError(); Print("error(",i,"): ",ErrorDescription(i));} return; } //---- } void ProcessMultiOpen(int SignalID, int SysID, color ClrBuy, color ClrSell) { // double lots = AccountFreeMargin()*0.1*0.00001; //íà÷àëüíûé ëîò = 100 ó.å. ïðè 100000 ó.å. (ñîîòíîøåíèå 1/1000) double lots = AccountFreeMargin()*0.1*0.00001; //íà÷àëüíûé ëîò lots = NormalizeDouble(lots, LotDigit); //îêðóãëèëè äî çíàêîâ ìèíèìàëüíîãî ëîòà if (MinLot>lots) lots = MinLot;// åñëè òåêóùéè ëîò ìåíüøå ìèíèìàëüíîãî int ticket, total, i, cbuy, csell, Signal; //---- ïðîâåðÿåì ñîñòîÿíèå ñíà÷àëà äëÿ îòêðûòûõ ïîçèöèé cbuy = CreatTicketArray(OP_BUY, SysID); csell = CreatTicketArray(OP_SELL, SysID); //---- òåïåðü äëÿ íîâûõ ïîçèöèé Signal = CheckSignal(true, SignalID); if (Signal == -1) return; // åñëè íåò ñèãíàëà òî ïðîñòî íè÷åãî íå äåëàåì //----- äëÿ ñîâåðøåíèÿ ïîêóïêè if(Signal == OP_BUY) { if (cbuy>0) //íàõîäèì ïîñëåäíèé îðäåð for (i=1; i<=cbuy; i++)//åñëè îí îòêðûò íà ýòîì áàðå, òî íè÷åãî íå äåëàåì { OrderSelect(Ticket[i], SELECT_BY_TICKET); if (OrderOpenTime()>=Time[0]) return; } //---- îòêðûâàåì îðäåð íà BUY ticket = OrderSend(Symbol(), OP_BUY, lots, Ask, 3, Ask-3000*Point, Ask+SysPar[SysID][_TP]*Point, SysParName[SysID], SysID, 0, ClrBuy); if (ticket==-1) { i=GetLastError(); Print("error(",i,"): ",ErrorDescription(i));} return; } //----- äëÿ ñîâåðøåíèÿ ïðîäàæè àíàëîãè÷íî if(Signal == OP_SELL) { if (csell>0) for (i=1; i<=csell; i++) { OrderSelect(Ticket[i], SELECT_BY_TICKET); if (OrderOpenTime()>=Time[0]) return; } ticket = OrderSend(Symbol(), OP_SELL, lots, Bid, 3, Bid+3000*Point, Bid-SysPar[SysID][_TP]*Point, SysParName[SysID], SysID, 0, ClrSell); if (ticket==-1) { i=GetLastError(); Print("error(",i,"): ",ErrorDescription(i));} return; } //---- } int init() { InitSystemParam(); SysParName[BLACKSYS] = "BLACKSYS"; SysPar[BLACKSYS][_TP] = 1000.0;// óðîâåíü ïðîôèòà, ïîñëå êîòîðîãî ñòàâèì â áåçóáûòîê SysPar[BLACKSYS][_NullTP] = 20.0;// óðîâåíü ïðîôèòà, ïîñëå êîòîðîãî ñòàâèì â áåçóáûòîê SysPar[BLACKSYS][_TS] = 50.0; // ðàññòîÿíèå òðåéëèíã ñòîïà SysPar[BLACKSYS][_NullSL] = 20.0;// óðîâåíü, ïðè äîñòèæåíèè êîòîðîãî ïåðåâîäèì îæèäàåìûé ïðîôèò â òî÷êó îòêðûòèÿ SysPar[BLACKSYS][_SL] = 70;//èçìåíåíèå ñòîïëîññà äëÿ ñèñòåìû, îñíîâàííîé íàñèãíàëàõ BLACKSYS SysParName[BLACKSYS+1] = "BLACKSYS+1"; SysPar[BLACKSYS+1][_NullTP] = 20.0;// óðîâåíü ïðîôèòà, ïîñëå êîòîðîãî ñòàâèì â áåçóáûòîê SysPar[BLACKSYS+1][_TS] = 50.0; // ðàññòîÿíèå òðåéëèíã ñòîïà SysPar[BLACKSYS+1][_NullSL] = 20.0;// óðîâåíü, ïðè äîñòèæåíèè êîòîðîãî ïåðåâîäèì îæèäàåìûé ïðîôèò â òî÷êó îòêðûòèÿ SysPar[BLACKSYS+1][_SL] = 8000;//èçìåíåíèå ñòîïëîññà äëÿ ñèñòåìû, îñíîâàííîé íàñèãíàëàõ BLACKSYS SysParName[ENVELOP] = "ENVELOP"; SysPar[ENVELOP][_TP] = 2000.0;// óðîâåíü ïðîôèòà SysPar[ENVELOP][_NullTP] = 20.0;// óðîâåíü ïðîôèòà, ïîñëå êîòîðîãî ñòàâèì â áåçóáûòîê SysPar[ENVELOP][_TS] = 40.0; // ðàññòîÿíèå òðåéëèíã ñòîïà SysPar[ENVELOP][_NullSL] = 20.0;// óðîâåíü, ïðè äîñòèæåíèè êîòîðîãî ïåðåâîäèì îæèäàåìûé ïðîôèò â òî÷êó îòêðûòèÿ SysPar[ENVELOP][_SL] = 70;//èçìåíåíèå ñòîïëîññà äëÿ ñèñòåìû, îñíîâàííîé íà ñèãíàëàõ SysPar[ENVELOP][_dSL] = 35;//íà÷àëüíûé øàã ïî óðîâíþ îòêðûòèþ ñëåäóþùåãî îðäåðà â ïîääåðæêó ïîçû SysParName[CSPLINE] = "CSPLINE"; SysPar[CSPLINE][_TP] = 180.0;// óðîâåíü ïðîôèòà SysPar[CSPLINE][_NullTP] = 30.0;// óðîâåíü ïðîôèòà, ïîñëå êîòîðîãî ñòàâèì â áåçóáûòîê SysPar[CSPLINE][_TS] = 50.0; // ðàññòîÿíèå òðåéëèíã ñòîïà SysPar[CSPLINE][_NullSL] = 70.0;// óðîâåíü, ïðè äîñòèæåíèè êîòîðîãî ïåðåâîäèì îæèäàåìûé ïðîôèò â òî÷êó îòêðûòèÿ SysPar[CSPLINE][_SL] = 45;//ñòîïëîññ SysParName[MACROSS3] = "MACROSS3"; SysPar[MACROSS3][_TP] = 200.0;// óðîâåíü ïðîôèòà SysPar[MACROSS3][_NullTP] = 30.0;// óðîâåíü ïðîôèòà, ïîñëå êîòîðîãî ñòàâèì â áåçóáûòîê SysPar[MACROSS3][_TS] = 50.0; // ðàññòîÿíèå òðåéëèíã ñòîïà SysPar[MACROSS3][_NullSL] = 70.0;// óðîâåíü, ïðè äîñòèæåíèè êîòîðîãî ïåðåâîäèì îæèäàåìûé ïðîôèò â òî÷êó îòêðûòèÿ SysPar[MACROSS3][_SL] = 45;//ñòîïëîññ SysParName[KRIVETKA] = "KRIVETKA"; SysPar[KRIVETKA][_TP] = 1000.0;// óðîâåíü ïðîôèòà SysPar[KRIVETKA][_NullTP] = 100.0;// óðîâåíü ïðîôèòà, ïîñëå êîòîðîãî ñòàâèì â áåçóáûòîê SysPar[KRIVETKA][_TS] = 150.0; // ðàññòîÿíèå òðåéëèíã ñòîïà SysPar[KRIVETKA][_NullSL] = 210.0;// óðîâåíü, ïðè äîñòèæåíèè êîòîðîãî ïåðåâîäèì îæèäàåìûé ïðîôèò â òî÷êó îòêðûòèÿ SysPar[KRIVETKA][_SL] = 450;//ñòîïëîññ SysPar[KRIVETKA][_dSL] = 50;//èçìåíåíèå ñòîïëîññà äëÿ ñèñòåìû, îñíîâàííîé íà ñèãíàëàõ SysParName[BORCHAN] = "BORCHAN"; SysPar[BORCHAN][_TP] = 1000.0;// óðîâåíü ïðîôèòà SysPar[BORCHAN][_NullTP] = 50.0;// óðîâåíü ïðîôèòà, ïîñëå êîòîðîãî ñòàâèì â áåçóáûòîê SysPar[BORCHAN][_TS] = 50.0; // ðàññòîÿíèå òðåéëèíã ñòîïà SysPar[BORCHAN][_NullSL] = 210.0;// óðîâåíü, ïðè äîñòèæåíèè êîòîðîãî ïåðåâîäèì îæèäàåìûé ïðîôèò â òî÷êó îòêðûòèÿ SysPar[BORCHAN][_SL] = 57;//ñòîïëîññ SysParName[FORCE] = "FORCE"; SysPar[FORCE][_TP] = 1000.0;// óðîâåíü ïðîôèòà SysPar[FORCE][_NullTP] = 40.0;// óðîâåíü ïðîôèòà, ïîñëå êîòîðîãî ñòàâèì â áåçóáûòîê SysPar[FORCE][_NullTP2] = 20.0;// óðîâåíü ïðîôèòà, ïîñëå êîòîðîãî ñòàâèì â áåçóáûòîê SysPar[FORCE][_TS] = 50.0; // ðàññòîÿíèå òðåéëèíã ñòîïà SysPar[FORCE][_NullSL] = 50.0;// óðîâåíü, ïðè äîñòèæåíèè êîòîðîãî ïåðåâîäèì îæèäàåìûé ïðîôèò â òî÷êó îòêðûòèÿ SysPar[FORCE][_SL] = 50;//ñòîïëîññ SysPar[FORCE][_dSL] = 40;//èçìåíåíèå ñòîïëîññà äëÿ ñèñòåìû, îñíîâàííîé íà ñèãíàëàõ SysParName[GRID] = "GRID"; SysPar[GRID][_TP] = 2000.0;// óðîâåíü ïðîôèòà SysPar[GRID][_NullTP] = 50.0;// óðîâåíü ïðîôèòà, ïîñëå êîòîðîãî ñòàâèì â áåçóáûòîê SysPar[GRID][_NullTP2] = 15.0;// óðîâåíü ïðîôèòà, ïîñëå êîòîðîãî ñòàâèì â áåçóáûòîê ïó÷îê îðäåðîâ SysPar[GRID][_TS] = 40.0; // ðàññòîÿíèå òðåéëèíã ñòîïà SysPar[GRID][_NullSL] = 100.0;// óðîâåíü, ïðè äîñòèæåíèè êîòîðîãî ïåðåâîäèì îæèäàåìûé ïðîôèò â òî÷êó îòêðûòèÿ SysPar[GRID][_SL] = 2000;//ñòîïëîññ SysParName[BUYFOREVE] = "BUYFOREVE"; SysPar[BUYFOREVE][_TP] = 2000.0;// óðîâåíü ïðîôèòà SysPar[BUYFOREVE][_NullTP] = 25.0;// óðîâåíü ïðîôèòà, ïîñëå êîòîðîãî ñòàâèì â áåçóáûòîê SysPar[BUYFOREVE][_NullTP2] = 15.0;// óðîâåíü ïðîôèòà, ïîñëå êîòîðîãî ñòàâèì â áåçóáûòîê ïó÷îê îðäåðîâ SysPar[BUYFOREVE][_TS] = 50.0; // ðàññòîÿíèå òðåéëèíã ñòîïà SysPar[BUYFOREVE][_NullSL] = 60.0;// óðîâåíü, ïðè äîñòèæåíèè êîòîðîãî ïåðåâîäèì îæèäàåìûé ïðîôèò â òî÷êó îòêðûòèÿ SysPar[BUYFOREVE][_SL] = 2000;//ñòîïëîññ SysParName[SELLFOREVE] = "SELLFOREVE"; SysPar[SELLFOREVE][_TP] = 2000.0;// óðîâåíü ïðîôèòà SysPar[SELLFOREVE][_NullTP] = 25.0;// óðîâåíü ïðîôèòà, ïîñëå êîòîðîãî ñòàâèì â áåçóáûòîê SysPar[SELLFOREVE][_NullTP2] = 15.0;// óðîâåíü ïðîôèòà, ïîñëå êîòîðîãî ñòàâèì â áåçóáûòîê ïó÷îê îðäåðîâ SysPar[SELLFOREVE][_TS] = 50.0; // ðàññòîÿíèå òðåéëèíã ñòîïà SysPar[SELLFOREVE][_NullSL] = 60.0;// óðîâåíü, ïðè äîñòèæåíèè êîòîðîãî ïåðåâîäèì îæèäàåìûé ïðîôèò â òî÷êó îòêðûòèÿ SysPar[SELLFOREVE][_SL] = 2000;//ñòîïëîññ // HideTestIndicators(true); return(0); } int deinit() { HideTestIndicators(false); return(0); } void start() { //---- ïðîâåðèòü ìîæíî ëè òîðãîâàòü ýêñïåðòó // if(IsTradeAllowed()==false) {Comment("!!!!ÒÎÐÃÎÂËß ÍÅÂÎÇÌÎÆÍÀ!!!!!"); return; } ProcessAvgLim(BUYFOREVE, BUYFOREVE, Black, Plum); TrailingAvgLim(BUYFOREVE, Black, Plum); ProcessAvgLim(SELLFOREVE,SELLFOREVE, SkyBlue, Wheat); TrailingAvgLim(SELLFOREVE, SkyBlue, Wheat); // ProcessAvgStop(GRID, GRID, Black, Plum); TrailingAvgStop(GRID, Black, Plum); /*ñóïåð õîðîøî*/ // ProcessAvgLim(FORCE, FORCE, Green, Red); TrailingAvgLim(FORCE, Green, Red); // ProcessAvgLim(ENVELOP, ENVELOP, Green, Red); TrailingAvgLim(ENVELOP, Green, Red); // ProcessSimple(BLACKSYS, BLACKSYS, Green, Red); TrailingSimple(BLACKSYS, Green, Red);// åâðî 4Í // ProcessSimple(MACROSS3, MACROSS3, Green, Red); TrailingSimple(MACROSS3, Green, Red);// /*õîðîøî*/ // ProcessTurn(BORCHAN, BORCHAN, Green, Red); TrailingSimple(BORCHAN, Green, Red); // ProcessSimple(KRIVETKA, KRIVETKA, Green, Red); TrailingSimple(KRIVETKA, Green, Red);// // ProcessSimple(CSPLINE, CSPLINE, Green, Red); TrailingSimple(CSPLINE, Green, Red);// // ProcessSimple(MACD, MACD, Black, Plum); TrailingSimple(MACD, Black, Plum); // ProcessAvgLim(BLACKSYS, BLACKSYS+1, Green, Red); TrailingAvgLim(BLACKSYS+1, Green, Red); // } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Series array that contains open prices of each bar
Series array that contains open time of each bar
Indicator Curves created:
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
It automatically opens orders when conditions are reached
Other Features: