Orders Execution
Indicators Used
0
Views
0
Downloads
0
Favorites
little_whore
//+-----------------------------------------------------------------------+
//| "Little Whore" Copyright © 2013 by Musa Esmagambetov cocaine@nxt.ru |
//+-----------------------------------------------------------------------+
#property copyright "Copyright © 2013 by Musa Esmagambetov"
#property link "cocaine@nxt.ru"
#define magic_number 19780402 //ìîé äåíü ðîæäåíèÿ)
double risk = 0.1; //íè÷åãî çäåñü íå òðîãàéòå!!!
int deep_bar = 7; //è çäåñü!!!
int orders_limit = 69; //è òóò!!!
extern string about_lot = "Åñëè ïîñòàâèòü 0, òî ñîâåòíèê âûñòàâèò ìèíèìàëüíûé ëîò îò äèëåðà";
extern double min_lot = 0.1; //ìèíèìàëüíûé ëîò ïî óìîë÷àíèþ
double ma_period = 195;
//double mm_start_balance; //áàëàíñ äåïîçèòà äëÿ ñòàðòà ðàñ÷åòîâ ìàíèìåíåäæåíòà
#define sell_signal -1 //ñèãíàë íà ïðîäàæó
#define buy_signal 1 //ñèãíàë íà ïîêóïêó
#define no_signal 0 //ñèãíàë âíå ðûíêà
#define close_buy 2 //ñèãíàë íà çàêðûòèå ïîêóïîê
#define close_sell -2 //ñèãíàë íà çàêðûòèå ïðîäàæ
#define error_signal 3 //ñèãíàë î íàëè÷èè îøèáêè
int buy_count = -1; //ñ÷åò÷èê òèêåòîâ ïîêóïîê
int sell_count = -1; //ñ÷åò÷èê òèêåòîâ ïðîäàæ
int buy_tickets[100], sell_tickets[100]; //ìàññèâû äëÿ õðàíåíèÿ òèêåòîâ
int previus_time = 0;
//-----------------------ïåðâè÷íàÿ èíèöèàëèçàöèÿ
void init(){previus_time = Time[0]; if (min_lot == 0) min_lot = MarketInfo(Symbol(), MODE_MINLOT);}
//-----------------------çàïóñê ñîâåòíèêà
int start(){
if(Bars<100 || IsTradeAllowed()==false || Volume[0]>1 || Time[0] == previus_time) return (0);
previus_time = Time[0];
switch(scan_market())
{
case sell_signal:
sell_count = sell_count + 1;
sell_tickets[sell_count] = sell_routine();
break;
case buy_signal:
buy_count = buy_count + 1;
buy_tickets[buy_count] = buy_routine();
break;
case close_buy:
while(buy_count >= 0){close_buy_func(buy_tickets[buy_count]);}
break;
case close_sell:
while(sell_count >=0){close_sell_func(sell_tickets[sell_count]);}
break;
case error_signal:
//MessageBox(error_func());
break;
case no_signal: break;
}
return (0);}
//-----------------------ïîäñ÷åò ïîçèöèé
int check_positions(int cmd){
int count=0;
for(int i=0;i<OrdersTotal();i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)== true && OrderSymbol()==Symbol() && OrderMagicNumber()==magic_number && OrderType() == cmd)
count++;}
return(count);
}
//-----------------------ïîèñê ñèãíàëîâ
int scan_market(){
if(GetLastError()!=0) return (error_signal);
double ma=iMA(NULL,0,ma_period,0,MODE_SMMA,PRICE_CLOSE,0);
//-----------------------êðèòåðèè ïîêóïêè
if((Open[deep_bar]<ma && Close[deep_bar]>ma) && check_positions(OP_BUY) < orders_limit)
return (buy_signal);
//-----------------------êðèòåðèè ïðîäàæè
if((Open[deep_bar]>ma && Close[deep_bar]<ma) && check_positions(OP_SELL) < orders_limit)
return (sell_signal);
//-----------------------êðèòåðèè çàêðûòèÿ ïîêóïîê
if((Open[deep_bar]>ma && Close[deep_bar]<ma) && check_positions(OP_BUY) == orders_limit)
return (close_buy);
//-----------------------êðèòåðèè çàêðûòèÿ ïðîäàæ
if((Open[deep_bar]<ma && Close[deep_bar]>ma) && check_positions(OP_SELL) == orders_limit)
return (close_sell);
return (no_signal);}
//-----------------------ïîêóïêà, âîçâðàùàåò òèêåò
int buy_routine(){return (OrderSend(Symbol(),OP_BUY,mm_func(),Ask,3,0,0,"Ïîêóïî÷êà!",magic_number,0,Blue));}
//-----------------------ïðîäàæà, âîçâðàùàåò òèêåò
int sell_routine(){return (OrderSend(Symbol(),OP_SELL,mm_func(),Bid,3,0,0,"Ïðîäàæåíüêà!",magic_number,0,Red));}
//-----------------------çàêðûòèå ïðîäàæ
void close_sell_func(int ticket){
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES) && OrderMagicNumber()==magic_number){
OrderClose(OrderTicket(),OrderLots(),Ask,3,White); sell_count = sell_count - 1;}}
//-----------------------çàêðûòèå ïîêóïîê
void close_buy_func(int ticket){
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES) && OrderMagicNumber()==magic_number){
OrderClose(OrderTicket(),OrderLots(),Bid,3,White); buy_count = buy_count - 1;}}
//-----------------------ðàñ÷åò ëîòà
double mm_func(){ //âîçâðàùàåò ðàçìåð ëîòà
//double lot, size = NormalizeDouble(AccountFreeMargin() * risk /(MarketInfo(Symbol(), MODE_LOTSIZE)/10), 2);
double lot = NormalizeDouble(AccountFreeMargin() * risk / MarketInfo(Symbol(), MODE_LOTSIZE), 2);
//-----------------------äîñòàòî÷íî ëè äåíåã?
if( lot < min_lot || (AccountFreeMarginCheck( Symbol(), OP_BUY, min_lot) < 10. ) ||
( AccountFreeMarginCheck( Symbol(), OP_SELL, min_lot) < 10. ) ||
( GetLastError() == 134 ) ){
lot = min_lot;}
return( lot );}
//-----------------------îáðàáîò÷èê îøèáîê
string error_func(){
switch(GetLastError()) {
case(0): return("Íåò îøèáêè");
case(1): return("Íåò îøèáêè, íî ðåçóëüòàò íåèçâåñòåí");
case(2): return("Îáùàÿ îøèáêà");
case(3): return("Íåïðàâèëüíûå ïàðàìåòðû");
case(4): return("Òîðãîâûé ñåðâåð çàíÿò");
case(5): return("Ñòàðàÿ âåðñèÿ êëèåíòñêîãî òåðìèíàëà");
case(6): return("Íåò ñâÿçè ñ òîðãîâûì ñåðâåðîì");
case(7): return("Íåäîñòàòî÷íî ïðàâ");
case(8): return("Ñëèøêîì ÷àñòûå çàïðîñû");
case(9): return("Íåäîïóñòèìàÿ îïåðàöèÿ, íàðóøàþùàÿ ôóíêöèîíèðîâàíèå ñåðâåðà");
case(64): return("Ñ÷åò çàáëîêèðîâàí");
case(65): return("Íåïðàâèëüíûé íîìåð ñ÷åòà");
case(128): return("Èñòåê ñðîê îæèäàíèÿ ñîâåðøåíèÿ ñäåëêè");
case(129): return("Íåïðàâèëüíàÿ öåíà");
case(130): return("Íåïðàâèëüíûå ñòîïû");
case(131): return("Íåïðàâèëüíûé îáú¸ì");
case(132): return("Ðûíîê çàêðûò");
case(133): return("Òîðãîâëÿ çàïðåùåíà");
case(134): return("Íåäîñòàòî÷íî äåíåã äëÿ ñîâåðøåíèÿ îïåðàöèè");
case(135): return("Öåíà èçìåíèëàñü");
case(136): return("Íåò öåí");
case(137): return("Áðîêåð çàíÿò");
case(138): return("Íîâûå öåíû");
case(139): return("Îðäåð çàáëîêèðîâàí è óæå îáðàáàòûâàåòñÿ");
case(140): return("Ðàçðåøåíà òîëüêî ïîêóïêà");
case(141): return("Ñëèøêîì ìíîãî çàïðîñîâ");
case(145): return("Ìîäèôèêàöèÿ çàïðåùåíà, ò.ê. îðäåð ñëèøêîì áëèçîê ê ðûíêó");
case(146): return("Ïîäñèñòåìà òîðãîâëè çàíÿòà");
case(147): return("Èñïîëüçîâàíèå äàòû èñòå÷åíèÿ çàïðåùåíî áðîêåðîì");
case(148): return("Êîëè÷åñòâî îòêðûòûõ è îòëîæåííûõ îðäåðîâ äîñòèãëî ïðåäåëà, óñòàíîâëåííîãî áðîêåðîì");
case(149): return("Ïîïûòêà îòêðûòü ïðîòèâîïîëîæíóþ ïîçèöèþ ê óæå ñóùåñòâóþùåé â ñëó÷àå, åñëè õåäæèðîâàíèå çàïðåùåíî");
case(150): return("Ïîïûòêà çàêðûòü ïîçèöèþ ïî èíñòðóìåíòó â ïðîòèâîðå÷èè ñ ïðàâèëîì FIFO");
default: return("Íåðàñïîçíàííàÿ îøèáêà");
}
}
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---