Orders Execution
Indicators Used
0
Views
0
Downloads
0
Favorites
qZigZag_Levels
//+--------------------------------------------------------------------------------------------------------------------------------------+
//| +ZigZag_Levels.mq4 |
//| Copyright © 2008, Xrust Solution. |
//| http://www.xrust.ucoz.net |
//+--------------------------------------------------------------------------------------------------------------------------------------+
// Èäåÿ ðàáîòû ýêñïåðòà çàêëþ÷àåòñÿ â òîì ÷òî öåíà "ïîìíèò" ïðîøëûå óðîâíè ýêñòðåìóìîâ êîòîðûå ÿ âëÿþòñÿ êëþ÷åâûìè òî÷êàìè
// ïðåîäîëåâ, èëè íå ïðåîäîëåâ êîòîðûå ìû èìååì äâà âàðèàíòà ðàçâèòèÿ ñîáûòèé - ïðîáîé èëè îòñêîê. Õàðàêòåðíîå ïîâåäåíèå
// öåíû ìîæíî âèçóàëüíî ïðîàíàëèçèðîâàòü íà àâòîðñêîì èíäèêàòîðå " lines_XR", â äàííîì ñîâåòíèêå ðåàëèçîâàí òîðãîâûé àëãîðèòì
// ðàçðàáîòàííûé ïðè ïîìîùè àíàëèçà ïîâåäåíèÿ öåíû èìåííî ýòèì èíäèêàòîðîì.
// Äàííûå ýêñòðåìóìû õàðàêòåðíî ðàñïîëàãàþòñÿ âíóòðè òîðãîâîãî äíÿ, ÷òî îáóñëàâëèâàåòñÿ ñìåíîé òîðãîâûõ ñåññèé è èõ õàðàêòåðíûõ
// îñîáåííîñòåé.Ýêñòðåìóìû â ýêñïåðòå ñ÷èòàþòñÿ ïî èíäèêàòîðàì "ÇèãÇàã" èëè "Ôðàêòàëû" êîòîðûå åñòü â êîìïëåêòå ïîñòàâêè òåðìèíàëà
// Ýêñïåðò ïîçâîëÿåò óñòàíîâèòü äî ÷åòûðåõ ïàð îòëîæåííûõ îðäåðîâ òèïîâ "ñòîï" èëè "ëèìèò" â óñòàíîâëåííîå âðåìÿ è íà ñðîê
// êîðîðûé îïðåäåëÿåòñÿ â ïðîöåññå îïòèìèçàöèè ýêñïåðòà. Òàê æå âîçìîæåí âûáîð ãëóáèíû òåñòèðóåìîé èñòîðèè è òàéìôðåéìà ñ êîòîðîãî
// ýòà èñòîðèÿ ÷èòàåòñÿ èíäèêàòîðîì, è êîòîðàÿ ìîæåò íå ñîâïàäàòü ñ ÒÔ íà êîòîðûé óñòàíîâëåí ýêñïåðò.
// Åñòü âîçìîæíîñòü âêëþ÷èòü àâòîìàòè÷åñêóþ êîððåêòèðîâêó òèïà îðäåðîâ, ÷òî äåéñòâåííî íà äëèííîì òðåíäå êîãäà áëàãîäàðÿ åé
// çàïðåùàåòñÿ óñòàíîêà îðäåðîâ ïðîòèâîïîëîæíîãî íàïðàâëåíèÿ.
// Åñòü òàêæå ôóíêöèÿ òðåéëèíãà òåéêïðîôèòà, ÷òî îáëåã÷àåò ðàáîòó ñîâåòíèêà âî ôëåòå. Îáùèé òðåéëèíã ñòîïëîññà íå èñïîëüçóåòñÿ,
// òàê êàê îí äîñòàòî÷íî ñèëüíî ñíèæàåò ïðèáûëüíîñòü ýêñïåðòà è óâåëè÷èâàò ïðîñàäêè, äîñòàòî÷íî òî÷íîãî ðàñ÷åòà óðîâíÿ ñòîïëîññà è
// òåéêïðîôèòà.
// Óðîâíè ñòîïëîññà è òåéêïðîôèòà ìîæíî çàäàòü êàê íàïðÿìóþ â ïóíêòàõ, òàê è â ïðîöåíòàõ îò øèðèíû òåêóùåãî êàíàëà óñòàíîâêè îðäåðîâ.
// Ðàçìåð îòêðûâàåìîãî ëîòà ìîæíî çàäàâàòü êàê íàïðÿìóþ, òàê è ïðèìåíÿòü ñèñòåìó àâòîìàòè÷åñêîãî îïðåäåëåíèÿ òîðãîâîãî ëîòà
// ïðîïîðöèîíàëüíîãî ïðîöåíòó îò äåïîçèòà.
// Âñå ïàðàìåòðû óñòàíàâëèâàþòñÿ äëÿ êàæäîãî îðäåðà îòäåëüíî,÷òî ïîçâîëÿåò òîðãîâîé ñèñòåìå áûòü î÷åíü ãèáêîé.
//+----------------------------------------------------------------------------------------------------------------------------------------+
// Òåõíîëîãèÿ îïòèìèçàöèè : òèï âòîðîãî,òðåòüåãî è ÷åòâåðòîãî îðäåðà ñòàâèì â 0 - îðäåðà îòêëþ÷åíû, îïòèìèçèðóåì òîëüêî ïåðâûé
//-----------------------------------------------------------------------------------------------------------------------------------------+
// Èìÿ ïåðåìåííîé |ìèí.çíà÷.| øàã | ìàêñ. çíà÷. | Ïðèìå÷àíèÿ
//--------------------------------|---------|------------|-------------------------|-------------------------------------------------------+
// òèï_îðäåðà_1 | -1 | 2 | 1 |
// ÷àñ_îòêðûòèÿ_1 | 0 | 1 | 23 |
// ìèíóòà_îòêðûòèÿ_1 | 0 | êðàòíûé ÒÔ | ìàêñ.çíà÷.÷àñà.äëÿ ÒÔ |
// âðåìÿ_óäåðæàíèÿ_â_÷àñàõ_1 | 0 | 1 | 23 |
// ìèí_äèñòàíöèÿ_äî_ýêñòðåìóìà_1 | 0 | 1 | 50 - 100 | Çàâèñèò îò ñðåäíåé âîëàòèëüíîñòè ïàðû
// ñòîïëîññ_îðäåðà_1 | -100 | 10 | -50 | Çàâèñèò îò ñðåäíåé âîëàòèëüíîñòè ïàðû
// òåéêïðîôèò_îðäåðà_1 | -200 | 10 | -100 | Çàâèñèò îò ñðåäíåé âîëàòèëüíîñòè ïàðû
//-----------------------------------------------------------------------------------------------------------------------------------------+
// Ïîñëå òîãî êàê ïîëó÷èëè îïòèìèçèðîâàííûå çíà÷åíèÿ ôèëüòðóåì ïî ìàêñ ïðèáûëè, áüåì åå çíà÷åíèÿ íà íåêèå áëîêè øàãîì ïî ïðåäïîëîæèì
// 400 - 500 - 1000 $ èùåì â ýòèõ áëîêàõ íàèìåíüøóþ ïðîñàäêó â ïðîöåíòàõ, ïîñëå ñðåäè âûáðàííûõ èùåì çíà÷åíèÿ ñ íàèìåíüøèì âðåìåíåì óäåðæàíèÿ.
// Ïåðåíîñèì ýòè çíà÷åíèÿ âî âòîðîé îðäåð ïðîäîëæàåì îïòèìèçèðîâàòü ïåðâûé. ïðè ýòîì âòîðîé îðäåð äàåò çíà÷åíèÿ ïîëó÷åííûå ïðè ïðîøëîé
// îïòèìèçàöèè. æåëàòåëüíî ïðè ýòîì èçìåíèòü ïðåäåëû âðåìåíè óñòàíîâêè îðäåðà è âðåìåíè óäåðæàíèÿ òàê,
// ÷òî áû ïåðâûé è âòîðîé åñëè è ïåðåêðûâàëèñü ïî âðåìåíè, òî ñîâñåì íåìíîãî. Ïî îêîí÷àíèè ýòîé ôàçû ïðîèçâîäèì ôèëüòðàöèþ êàê è â
// ïðåäûäóùåì ñëó÷àå, è ïåðåíîñèì çíà÷åíèÿ â òðåòèé îðäåð. è îïÿòü ïðîäîëæàåì ïîêà íå çàïîëíèì îðäåðà, è ïðè ýòîì îíè íå áóäóò äðóã äðóãà ïåðåêðûâàòü.
//
#property copyright "Copyright © 2008, Xrust Solution."
#property link "http://www.xrust.ucoz.net"
extern string ïàðàìåòðû_ïåðâîãî_îðäåðà = "";
extern int òèï_îðäåðà_1 = 1 ;//"-1" = ëèìèòíûå îðäåðà , "1" = ñòîð îðäåðà "0" îòêëþ÷åí
extern int ÷àñ_îòêðûòèÿ_1 = 21 ;//îò 0 äî 23 øàã 1
extern int ìèíóòà_îòêðûòèÿ_1 = 40 ;//îò 0 äî 30 øàã30 íà Ì30, äî 45 øàã 15 íà Ì15, äî 55 øàã 5 íà Ì5
extern int âðåìÿ_óäåðæàíèÿ_â_÷àñàõ_1 = 1 ;//îò 1 äî 23 øàã 1, åñëè "0" - òî ñåò îðäåðîâ íå èñïîëüçóåòñÿ
extern int ìèí_äèñòàíöèÿ_äî_ýêñòðåìóìà_1 = 10 ;//äèñòàíöèÿ â ïèïñàõ ìåíüøå ñòîïëåâåëà íå ñòàâèòü
extern int ñòîïëîññ_îðäåðà_1 = -100 ;//îòðèöàòåëüíûå çíà÷åíèÿ - øèðèíà ñòîïëîññà îòíîñèòåëüíî øèðèíû êàíàëà ïàðû îðäåðîâ
extern int òåéêïðîôèò_îðäåðà_1 = -100 ;//â ïðîöåíòàõ, ïîëîæèòåëüíûå çíà÷åíèÿ - ïðÿìîé ðàçìåð ñòîïà è òåéêà â ïóíêòàõ
extern double îáüåì_îðäåðà_â_ëîòàõ_1 = 0.1;//îòðèöàòåëüíûå öåëûå çíà÷åíèÿ = ïðîöåíòû îò äåïîçèòà è àâòîëîò, ïîëîæèòåëüíîå äðîáíîå
//---- ïîëîæèòåëüíîå äðîáíîå çíà÷åíèå = ïðÿìîå çíà÷åíèå â äîëÿõ ëîòà ( àâòîëîò ïîêà íå àêòèâåí)
extern string ïàðàìåòðû_âòîðîãî_îðäåðà = "";
extern int òèï_îðäåðà_2 = 0 ;
extern int ÷àñ_îòêðûòèÿ_2 = 18 ;
extern int ìèíóòà_îòêðûòèÿ_2 = 0 ;
extern int âðåìÿ_óäåðæàíèÿ_â_÷àñàõ_2 = 4 ;
extern int ìèí_äèñòàíöèÿ_äî_ýêñòðåìóìà_2 = 46;
extern int ñòîïëîññ_îðäåðà_2 = -100 ;
extern int òåéêïðîôèò_îðäåðà_2 = -100 ;
extern double îáüåì_îðäåðà_â_ëîòàõ_2 = 0.1 ;
//----
extern string ïàðàìåòðû_òðåòüåãî_îðäåðà = "";
extern int òèï_îðäåðà_3 = 0 ;
extern int ÷àñ_îòêðûòèÿ_3 = 0 ;
extern int ìèíóòà_îòêðûòèÿ_3 = 0 ;
extern int âðåìÿ_óäåðæàíèÿ_â_÷àñàõ_3 = 0 ;
extern int ìèí_äèñòàíöèÿ_äî_ýêñòðåìóìà_3 = 10;
extern int ñòîïëîññ_îðäåðà_3 = -100 ;
extern int òåéêïðîôèò_îðäåðà_3 = -100 ;
extern double îáüåì_îðäåðà_â_ëîòàõ_3 = 0.1 ;
//----
extern string ïàðàìåòðû_÷åòâåðòîãî_îðäåðà = "";
extern int òèï_îðäåðà_4 = 0 ;
extern int ÷àñ_îòêðûòèÿ_4 = 0 ;
extern int ìèíóòà_îòêðûòèÿ_4 = 0 ;
extern int âðåìÿ_óäåðæàíèÿ_â_÷àñàõ_4 = 0 ;
extern int ìèí_äèñòàíöèÿ_äî_ýêñòðåìóìà_4 = 10;
extern int ñòîïëîññ_îðäåðà_4 = -100 ;
extern int òåéêïðîôèò_îðäåðà_4 = -100 ;
extern double îáüåì_îðäåðà_â_ëîòàõ_4 = 0.1 ;
//----
extern int êîëè÷åñòâî_áàðîâ_èñòîðèè = 1000;
extern int ÒàéìÔðåéì_ñ÷èòûâàåìûõ_äàííûõ = 0;
extern bool Çèãçàã_Ôðàêòàë_êàê_èíäèêàòîð = true;
//----
extern bool Êîððåêòèðîâêà_òèïà_îðäåðà = true;
extern bool Òðåéëèíã_òåéê_ïðîôèòà = false;
extern bool Àâòîóñòàíîâêà_âðåìåíè = false;
extern bool Îáùèé_Ñòîïëîññ = false;
extern bool Óñòàíîâêà_îðäåðà_ñ_ðûíêà = true;
//----
int magic1=123,magic2=456,magic3=789,magic4=741;
//----
int mno,ZzPeriod;
//----
double step=1;
//----
double ZZ[1000];int ord[10][2];int res[4];
//----
bool Err147=false;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init(){
if(ÒàéìÔðåéì_ñ÷èòûâàåìûõ_äàííûõ<1 ){ZzPeriod=Period();}
if(ÒàéìÔðåéì_ñ÷èòûâàåìûõ_äàííûõ==1){ZzPeriod=1;}
if(ÒàéìÔðåéì_ñ÷èòûâàåìûõ_äàííûõ==2){ZzPeriod=5;}
if(ÒàéìÔðåéì_ñ÷èòûâàåìûõ_äàííûõ==3){ZzPeriod=15;}
if(ÒàéìÔðåéì_ñ÷èòûâàåìûõ_äàííûõ==4){ZzPeriod=30;}
if(ÒàéìÔðåéì_ñ÷èòûâàåìûõ_äàííûõ==5){ZzPeriod=60;}
if(ÒàéìÔðåéì_ñ÷èòûâàåìûõ_äàííûõ==6){ZzPeriod=240;}
if(ÒàéìÔðåéì_ñ÷èòûâàåìûõ_äàííûõ>=7){ZzPeriod=1440;}
if(Digits==5||Digits==3){mno=10;}else{mno=1;}
return;}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
void start(){int i;
static int mxdrdn,mxord,mxzal;
if(AccountBalance()-AccountEquity()>mxdrdn){mxdrdn=AccountBalance()-AccountEquity();}
if(IsVisualMode()){
int ot;
for(i=0;i<OrdersTotal();i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()==Symbol()){
if(OrderType()<2){
ot++;
}
}
}
}
}
if(ot>mxord){mxord=ot;}
if(AccountMargin()>mxzal){mxzal=AccountMargin();}
Comment("Ïðîôèò = ",AccountProfit(),"\nÇàëîã = ",AccountMargin(),"\nMax Çàëîã = ",mxzal,"\nÏðîñàäêà = ",mxdrdn,"\nÎðäåðîâ = ",mxord);
//----
//----
if(Òðåéëèíã_òåéê_ïðîôèòà){ProfitTraling();}
//----
if(NewBar()){
if(Err147){DelOldOrders();}
if(Çèãçàã_Ôðàêòàë_êàê_èíäèêàòîð){
ReadZZ(êîëè÷åñòâî_áàðîâ_èñòîðèè);
}else{
ReadFr(êîëè÷åñòâî_áàðîâ_èñòîðèè);
}
//----
if(Àâòîóñòàíîâêà_âðåìåíè){TimeSetAuto();}
//----
if(Àâòîóñòàíîâêà_âðåìåíè){
÷àñ_îòêðûòèÿ_1=res[0];
âðåìÿ_óäåðæàíèÿ_â_÷àñàõ_1=res[1]-res[0];
}
if(Trade(÷àñ_îòêðûòèÿ_1,ìèíóòà_îòêðûòèÿ_1)){
SetOrders(òèï_îðäåðà_1,
âðåìÿ_óäåðæàíèÿ_â_÷àñàõ_1,
ìèí_äèñòàíöèÿ_äî_ýêñòðåìóìà_1,
magic1,
îáüåì_îðäåðà_â_ëîòàõ_1,
ñòîïëîññ_îðäåðà_1,
òåéêïðîôèò_îðäåðà_1
);
}
if(òèï_îðäåðà_2==0)return;
if(Àâòîóñòàíîâêà_âðåìåíè){
÷àñ_îòêðûòèÿ_2=res[1];
âðåìÿ_óäåðæàíèÿ_â_÷àñàõ_2=res[2]-res[1];
}
if(Îáùèé_Ñòîïëîññ){ñòîïëîññ_îðäåðà_2=ñòîïëîññ_îðäåðà_1;}
if(Trade(÷àñ_îòêðûòèÿ_2,ìèíóòà_îòêðûòèÿ_2)){
SetOrders(òèï_îðäåðà_2,
âðåìÿ_óäåðæàíèÿ_â_÷àñàõ_2,
ìèí_äèñòàíöèÿ_äî_ýêñòðåìóìà_2,
magic2,
îáüåì_îðäåðà_â_ëîòàõ_2,
ñòîïëîññ_îðäåðà_2,
òåéêïðîôèò_îðäåðà_2
);
}
if(òèï_îðäåðà_3==0)return;
if(Àâòîóñòàíîâêà_âðåìåíè){
÷àñ_îòêðûòèÿ_3=res[2];
âðåìÿ_óäåðæàíèÿ_â_÷àñàõ_2=res[3]-res[2];
}
if(Îáùèé_Ñòîïëîññ){ñòîïëîññ_îðäåðà_3=ñòîïëîññ_îðäåðà_1;}
if(Trade(÷àñ_îòêðûòèÿ_3,ìèíóòà_îòêðûòèÿ_3)){
SetOrders(òèï_îðäåðà_3,
âðåìÿ_óäåðæàíèÿ_â_÷àñàõ_3,
ìèí_äèñòàíöèÿ_äî_ýêñòðåìóìà_3,
magic3,
îáüåì_îðäåðà_â_ëîòàõ_3,
ñòîïëîññ_îðäåðà_3,
òåéêïðîôèò_îðäåðà_3
);
}
if(òèï_îðäåðà_4==0)return;
if(Àâòîóñòàíîâêà_âðåìåíè){
÷àñ_îòêðûòèÿ_3=res[3];
âðåìÿ_óäåðæàíèÿ_â_÷àñàõ_3=24-res[3];
}
if(Îáùèé_Ñòîïëîññ){ñòîïëîññ_îðäåðà_4=ñòîïëîññ_îðäåðà_1;}
if(Trade(÷àñ_îòêðûòèÿ_3,ìèíóòà_îòêðûòèÿ_4)){
SetOrders(òèï_îðäåðà_4,
âðåìÿ_óäåðæàíèÿ_â_÷àñàõ_4,
ìèí_äèñòàíöèÿ_äî_ýêñòðåìóìà_4,
magic4,
îáüåì_îðäåðà_â_ëîòàõ_4,
ñòîïëîññ_îðäåðà_4,
òåéêïðîôèò_îðäåðà_4
);
}
}
return;}
//+------------------------------------------------------------------+
//| Èùåì îðäåð âûøå\íèæå óêàçàííîé öåíû |
//+------------------------------------------------------------------+
double SearchPrise(int typ,double prise){double res,up=100000,dn=0;int i;
if(typ==0){
for(i=0;i<OrdersTotal();i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()==Symbol()){
if(OrderType()>1){
if(OrderOpenPrice()-prise>0){
if(OrderOpenPrice()-prise<up){
up=OrderOpenPrice()-prise;
res=OrderOpenPrice();
}
}
}
}
}
}
return(res);
}
if(typ==1){
for(i=0;i<OrdersTotal();i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()==Symbol()){
if(OrderType()>1){
if(prise-OrderOpenPrice()>0){
if(OrderOpenPrice()-prise<dn){
dn=prise-OrderOpenPrice();
res=OrderOpenPrice();
}
}
}
}
}
}
return(res);
}
return(0);
}
//+------------------------------------------------------------------+
//| Òðåéëèíã ïðîôèòà |
//+------------------------------------------------------------------+
void ProfitTraling(){
for(int i=0;i<OrdersTotal();i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()==Symbol()){
if(OrderType()<2){
int ordticket=OrderTicket();
double ordtype =OrderType();
double ordprise =OrderOpenPrice();
double ordtake =NormalizeDouble(OrderTakeProfit(),Digits);
double ordstop =NormalizeDouble(OrderStopLoss(),Digits);
double newtake =NormalizeDouble(SearchPrise(ordtype,ordprise),Digits);
if(newtake!=0){
if(newtake!=ordtake){
if(!OrderModify(ordticket,ordprise,ordstop,newtake,0,White)){
Print("Error =",GetLastError());
}
}
}
}
}
}
}
return;
}
//+------------------------------------------------------------------+
//| Îïðåäåëÿåì íàèëó÷øåå âðåìÿ äëÿ óñòàíîâêè îðäåðîâ |
//+------------------------------------------------------------------+
void TimeSetAuto(){
if(TimeHour(TimeCurrent())==0){
int time[24];
for(int p=0;p<(êîëè÷åñòâî_áàðîâ_èñòîðèè/24);p++){
for(int i=0;i<24;i++){
if(iCustom(Symbol(),60,"Zigzag",0,(p*24)+i)!=0){
time[i]++;
}
}
}
for(i=0;i<4;i++){
int re=ArrayMaximum(time);
res[i]=re+1;
time[re-1]=0;
time[re]=0;
time[re+1]=0;
time[re+2]=0;
}
ArraySort(res);
}
return;
}
//+------------------------------------------------------------------+
//| åñëè öåíà êðàéíÿÿ |
//+------------------------------------------------------------------+
int IfPrise(double up,double dn){
ArraySort(ZZ,WHOLE_ARRAY,0,MODE_DESCEND );
if(NormalizeDouble(up,Digits)==NormalizeDouble(ZZ[0],Digits)){return( 1);}
ArraySort(ZZ,WHOLE_ARRAY,0,MODE_ASCEND );
if(NormalizeDouble(dn,Digits)==NormalizeDouble(ZZ[0],Digits)){return(-1);}
return(0);
}
//+------------------------------------------------------------------+
//| Ñòàâèì îòëîæêè |
//+------------------------------------------------------------------+
void SetOrders(int typ,int ordtime,int mindistanse,int magic,double lot,double sl=0,double tp=0){
Print("trade");
double sll,tpp;
int ticket,err;
double buy =NormalizeDouble(UpPrise(NormalizeDouble(Ask,Digits),mindistanse),Digits);
double sell=NormalizeDouble(DnPrise(NormalizeDouble(Bid,Digits),mindistanse),Digits);
int stlw=MarketInfo(Symbol(),MODE_STOPLEVEL);
int timecl=TimeCurrent()+ordtime*3600;
if(Êîððåêòèðîâêà_òèïà_îðäåðà){
int korr=IfPrise(buy,sell);
if(korr!=0){typ=korr;}
}
if(typ<0){
if(CountOpOrd(3,magic)<1){
if(buy!=0){
if(OpPrise(buy)){RefreshRates();
if(buy-Ask<stlw*Point){buy=NormalizeDouble(Ask+stlw*Point,Digits);}
if(sl<0){sll=NormalizeDouble(buy+((buy-sell)*(sl/(-100))),Digits);}
if(sl>0){sll=NormalizeDouble(buy+sl*Point*mno,Digits);}
if(tp>0){tpp=NormalizeDouble(buy-tp*Point*mno,Digits);}
if(tp<0){tpp=NormalizeDouble(buy-((buy-sell)*(-tp/100)),Digits);}
ticket=OrderSend(Symbol(),3,lot,buy,3*mno,sll,tpp,NULL,magic,timecl,Red);
if(ticket<1){// îáðàáîòêà îøèáîê
err=GetLastError();
if(err==147){// çàïðåøåíèå âðåìåíè èñòå÷åíèÿ
Err147=true;
ticket=OrderSend(Symbol(),3,lot,buy,3*mno,sll,tpp,NULL,magic,0,Red);
if(ticket>0){
WriteOrder(ticket,timecl);
}else{
err=GetLastError();
if(err==130){
if(Óñòàíîâêà_îðäåðà_ñ_ðûíêà){
RefreshRates();
ticket=OrderSend(Symbol(),1,lot,Bid,3*mno,sll,tpp,NULL,magic,0,Red);
if(ticket<1){
err=GetLastError();
Print("Îøèáêà óñòàíîâêè îðäåðà ñ ðûíêà ¹ ",err,
" òèï îðäåðà = ÑÅËË ",
" Öåíà îòêðûòèÿ =",Bid,
" Öåíà = ",Bid,
" Ñòîïëîññ = ",sll,
" Òåéêïðîôèò = ",tpp);
}
}else{
}
}
}
}
if(err==130){
if(Óñòàíîâêà_îðäåðà_ñ_ðûíêà){
RefreshRates();
ticket=OrderSend(Symbol(),1,lot,Bid,3*mno,sll,tpp,NULL,magic,0,Red);
if(ticket<1){
err=GetLastError();
Print("Îøèáêà óñòàíîâêè îðäåðà ñ ðûíêà ¹ ",err,
" òèï îðäåðà = ÑÅËË ",
" Öåíà îòêðûòèÿ =",Bid,
" Öåíà = ",Bid,
" Ñòîïëîññ = ",sll,
" Òåéêïðîôèò = ",tpp);
}
}else{
}
}
Print("3 Îøèáêà óñòàíîâêè îðäåðà ¹ ",err);
}
}
}
}
if(CountOpOrd(2,magic)<1){
if(sell!=0){
if(OpPrise(sell)){RefreshRates();
if(Bid-sell<stlw*Point){NormalizeDouble(Bid-stlw*Point,Digits);}
if(sl<0){sll=NormalizeDouble(sell-((buy-sell)*(sl/(-100))),Digits);}
if(sl>0){sll=NormalizeDouble(sell-sl*Point*mno,Digits);}
if(tp>0){tpp=NormalizeDouble(sell+(tp*Point*mno),Digits);}
if(tp<0){tpp=NormalizeDouble(sell+((buy-sell)*(-tp/100)),Digits);}
ticket=OrderSend(Symbol(),2,lot,sell,3*mno,sll,tpp,NULL,magic,timecl, Blue);
if(ticket<1){// îáðàáîòêà îøèáîê
err=GetLastError();
if(err==147){// çàïðåøåíèå âðåìåíè èñòå÷åíèÿ
Err147=true;
ticket=OrderSend(Symbol(),2,lot,sell,3*mno,sll,tpp,NULL,magic,0, Blue);
if(ticket>0){
WriteOrder(ticket,timecl);
}else{
err=GetLastError();
if(err==130){
if(Óñòàíîâêà_îðäåðà_ñ_ðûíêà){
RefreshRates();
ticket=OrderSend(Symbol(),0,lot,Ask,3*mno,sll,tpp,NULL,magic,0,Blue);
if(ticket<1){
err=GetLastError();
Print("Îøèáêà óñòàíîâêè îðäåðà ñ ðûíêà ¹ ",err,
" òèï îðäåðà = BUY ",
" Öåíà îòêðûòèÿ =",Ask,
" Öåíà = ",Ask,
" Ñòîïëîññ = ",sll,
" Òåéêïðîôèò = ",tpp);
}
}else{
}
}
}
}
if(err==130){
if(Óñòàíîâêà_îðäåðà_ñ_ðûíêà){
RefreshRates();
ticket=OrderSend(Symbol(),0,lot,Ask,3*mno,sll,tpp,NULL,magic,0,Blue);
if(ticket<1){
err=GetLastError();
Print("Îøèáêà óñòàíîâêè îðäåðà ñ ðûíêà ¹ ",err,
" òèï îðäåðà = BUY ",
" Öåíà îòêðûòèÿ =",Ask,
" Öåíà = ",Ask,
" Ñòîïëîññ = ",sll,
" Òåéêïðîôèò = ",tpp);
}
}else{
}
}
Print("2 Îøèáêà óñòàíîâêè îðäåðà ¹ ",err);
}
}
}
}
}
if(typ>0){
if(CountOpOrd(4,magic)<1){
if(buy!=0){
if(OpPrise(buy)){RefreshRates();
if(buy-Ask<stlw*Point){NormalizeDouble(Ask+stlw*Point,Digits);}
if(sl<0){sll=NormalizeDouble(buy-((buy-sell)*(sl/(-100))),Digits);}
if(sl>0){sll=NormalizeDouble(buy-sl*Point*mno,Digits);}
if(tp>0){tpp=NormalizeDouble(buy+tp*Point*mno,Digits);}
if(tp<0){tpp=NormalizeDouble(buy+((buy-sell)*(-tp/100)),Digits);}
ticket=OrderSend(Symbol(),4,lot,buy,3*mno,sll,tpp,NULL,magic,timecl,Blue);
if(ticket<1){// îáðàáîòêà îøèáîê
err=GetLastError();
if(err==147){// çàïðåøåíèå âðåìåíè èñòå÷åíèÿ
Err147=true;
ticket=OrderSend(Symbol(),4,lot,buy,3*mno,sll,tpp,NULL,magic,0,Blue);
if(ticket>0){
WriteOrder(ticket,timecl);
}else{
err=GetLastError();
if(err==130){
if(Óñòàíîâêà_îðäåðà_ñ_ðûíêà){
RefreshRates();
ticket=OrderSend(Symbol(),0,lot,Ask,3*mno,sll,tpp,NULL,magic,0,Blue);
if(ticket<1){
err=GetLastError();
Print("Îøèáêà óñòàíîâêè îðäåðà ñ ðûíêà ¹ ",err,
" òèï îðäåðà = BUY ",
" Öåíà îòêðûòèÿ =",Ask,
" Öåíà = ",Ask,
" Ñòîïëîññ = ",sll,
" Òåéêïðîôèò = ",tpp);
}
}else{
}
}
}
}
if(err==130){
if(Óñòàíîâêà_îðäåðà_ñ_ðûíêà){
RefreshRates();
ticket=OrderSend(Symbol(),0,lot,Ask,3*mno,sll,tpp,NULL,magic,0,Blue);
if(ticket<1){
err=GetLastError();
Print("Îøèáêà óñòàíîâêè îðäåðà ñ ðûíêà ¹ ",err,
" òèï îðäåðà = BUY ",
" Öåíà îòêðûòèÿ =",Ask,
" Öåíà = ",Ask,
" Ñòîïëîññ = ",sll,
" Òåéêïðîôèò = ",tpp);
}
}else{
}
}
Print("4 Îøèáêà óñòàíîâêè îðäåðà ¹ ",err);
}
}
}
}
if(CountOpOrd(5,magic)<1){
if(sell!=0){
if(OpPrise(sell)){RefreshRates();
if(Bid-sell<stlw*Point){NormalizeDouble(Bid-stlw*Point,Digits);}
if(sl<0){sll=NormalizeDouble(sell+((buy-sell)*(sl/(-100))),Digits);}
if(sl>0){sll=NormalizeDouble(sell+sl*Point*mno,Digits);}
if(tp>0){tpp=NormalizeDouble(sell-tp*Point*mno,Digits);}
if(tp<0){tpp=NormalizeDouble(sell-((buy-sell)*(-tp/100)),Digits);}
ticket=OrderSend(Symbol(),5,lot,sell,3*mno,sll,tpp,NULL,magic,timecl, Red);
if(ticket<1){// îáðàáîòêà îøèáîê
err=GetLastError();
if(err==147){// çàïðåøåíèå âðåìåíè èñòå÷åíèÿ
Err147=true;
ticket=OrderSend(Symbol(),5,lot,sell,3*mno,sll,tpp,NULL,magic,0, Red);
if(ticket>0){
WriteOrder(ticket,timecl);
}else{
err=GetLastError();
if(err==130){
if(Óñòàíîâêà_îðäåðà_ñ_ðûíêà){
RefreshRates();
ticket=OrderSend(Symbol(),1,lot,Bid,3*mno,sll,tpp,NULL,magic,0,Red);
if(ticket<1){
err=GetLastError();
Print("Îøèáêà óñòàíîâêè îðäåðà ñ ðûíêà ¹ ",err,
" òèï îðäåðà = SELL ",
" Öåíà îòêðûòèÿ =",Bid,
" Öåíà = ",Bid,
" Ñòîïëîññ = ",sll,
" Òåéêïðîôèò = ",tpp);
}
}else{
}
}
}
}
if(err==130){
if(Óñòàíîâêà_îðäåðà_ñ_ðûíêà){
RefreshRates();
ticket=OrderSend(Symbol(),1,lot,Bid,3*mno,sll,tpp,NULL,magic,0,Red);
if(ticket<1){
err=GetLastError();
Print("Îøèáêà óñòàíîâêè îðäåðà ñ ðûíêà ¹ ",err,
" òèï îðäåðà = SELL ",
" Öåíà îòêðûòèÿ =",Bid,
" Öåíà = ",Bid,
" Ñòîïëîññ = ",sll,
" Òåéêïðîôèò = ",tpp);
}
}else{
}
}
Print("5 Îøèáêà óñòàíîâêè îðäåðà ¹ ",err);
}
}
}
}
}
return;
}
//+------------------------------------------------------------------+
//| Çàïèñü îðäåðà â ìàññèâ äëÿ ñâîåâðåììåíîãî óäàëåíèÿ |
//+------------------------------------------------------------------+
void WriteOrder(int ticket,int time){int pos;
int razm=ArrayRange(ord,1);
for(int i=0;i<razm;i++){
if(ord[i][0]==ticket){return;}
if(ord[i][1]==0){pos=i;}
}
ord[pos][0]=ticket;
ord[pos][1]=time;
return;
}
//+------------------------------------------------------------------+
//| ÷èòàåò ìàññèâ îðäåðîâ è óäàëÿåò îëðäåðà ñ èñòåêøèì ñðîêîì |
//+------------------------------------------------------------------+
void DelOldOrders(){
int razm=ArrayRange(ord,1);
for(int i=0;i<razm;i++){
if(ord[i][1]!=0){
if(ord[i][1]<=TimeCurrent()){
int ticket=ord[i][0];
if(OrderSelect(ticket,SELECT_BY_TICKET)){
if(OrderCloseTime()==0){
if(OrderType()>1){
if(OrderDelete(OrderTicket(),White)){
ord[i][0]=0;
ord[i][1]=0;
}
}
}else{ord[i][0]=0;ord[i][1]=0;}
}else{ord[i][0]=0;ord[i][1]=0;}
}
}
}
return;
}
//-----------------------------------------------------------------------------+
//| Ðàñ÷åò ëîòà ñîîòâ ðèñêó è áàëàíñó |
//-----------------------------------------------------------------------------+
double CalcLotsAuto(double Risk){double LotOpt,LotNeOpt,Zalog;
RefreshRates();
//double bs=AccountBalance()+GrPorfit();
double lott=MarketInfo(Symbol(),MODE_MARGINREQUIRED)/1000;
double Marga=AccountFreeMargin();
double Balans=AccountBalance();
double LotMin=MarketInfo(Symbol(),MODE_MINLOT);
double LotMax=MarketInfo(Symbol(),MODE_MAXLOT);
double StepLot=MarketInfo(Symbol(),MODE_LOTSTEP);
double StopLv=AccountStopoutLevel();
int PrsMinLot=1000*LotMin;
if(Risk<0)Risk=0;
if(Risk>100)Risk=100;
if(StepLot==0.01){int step=2;}else{step=1;}
//---------------------------
Zalog=(Balans*(Risk/100));
LotOpt=NormalizeDouble((Zalog/1000),step);
if(LotOpt>LotMax)LotOpt=LotMax;
if(LotOpt<LotMin)LotOpt=LotMin;
return(LotOpt);
}
//+------------------------------------------------------------------+
//| Âðåìÿ óñòàíîâêè îäíîãî îòëîæåííèêà â äåíü |
//+------------------------------------------------------------------+
bool Trade(int ho,int min){
if(TimeHour(TimeCurrent())==ho){
if(TimeMinute(TimeCurrent())>=min&&TimeMinute(TimeCurrent())<min+5){
return(true);
}
}
return(false);
}
//-----------------------------------------------------------------------------+
// Èùåì öåíó íóæíîãî îðäåðà |
//-----------------------------------------------------------------------------+
bool OpPrise(double prise,int dist=5){return(true);
for(int i=0;i<OrdersTotal();i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()==Symbol()){
if(MathAbs(OrderOpenPrice()-prise)<dist*Point*mno){
return(false);
}
}
}
}
return(true);
}
//+------------------------------------------------------------------+
//| Èùåì áëèçæàéøóþ öåíó ñâåðõó |
//+------------------------------------------------------------------+
double UpPrise(double prise,int dist){double res=100000;int shift;
int stlw=MarketInfo(Symbol(),MODE_STOPLEVEL);
if(dist<stlw){dist=stlw;}
int count=ArraySize(ZZ);
ArraySort(ZZ,WHOLE_ARRAY,0,MODE_DESCEND );
for(int i=0;i<count;i++){
double pd=ZZ[i]-prise;
if(pd>dist*Point*mno){
if(pd<res){
res=pd;
shift=i;
}
}
}
return(ZZ[shift]);
}
//+------------------------------------------------------------------+
//| Èùåì áëèçæàéøóþ öåíó ñíèçó |
//+------------------------------------------------------------------+
double DnPrise(double prise,int dist){double res=100000;int shift;
int stlw=MarketInfo(Symbol(),MODE_STOPLEVEL);
if(dist<stlw){dist=stlw;}
int count=ArraySize(ZZ);
ArraySort(ZZ,WHOLE_ARRAY,0,MODE_ASCEND );
for(int i=0;i<count;i++){
double pd=prise-ZZ[i];
if(pd>dist*Point*mno){
if(pd<res){
res=pd;
shift=i;
}
}
}
return(ZZ[shift]);
}
//+------------------------------------------------------------------+
//| Çàáèâàåì ýêñòðåìóìû â ìàññèâ |
//+------------------------------------------------------------------+
void ReadZZ(int per){int y;
ArrayInitialize(ZZ,0);
ArrayResize(ZZ,1000);
for(int i=3;i<per;i++){
double x = iCustom(Symbol(),ZzPeriod,"Zigzag",0,i);
if(x!=0){ZZ[y]=NormalizeDouble(x,Digits);y++;}
}
ArrayResize(ZZ,y);
}
//+------------------------------------------------------------------+
//| Çàáèâàåì ýêñòðåìóìû ôðàêòàëîâ â ìàññèâ |
//+------------------------------------------------------------------+
void ReadFr(int per){int y;
ArrayInitialize(ZZ,0);
ArrayResize(ZZ,1000);
for(int i=3;i<per;i++){
double xup = iFractals(Symbol(),ZzPeriod,MODE_UPPER,i);
double xdn = iFractals(Symbol(),ZzPeriod,MODE_LOWER,i);
if(xup!=0){ZZ[y]=NormalizeDouble(xup,Digits);y++;xdn=0;}
if(xdn!=0){ZZ[y]=NormalizeDouble(xdn,Digits);y++;xup=0;}
}
ArrayResize(ZZ,y);
}
//-------------------------------------------------------------------+
//| Ïîäñ÷èòûâàåò êîëè÷åñòâî îòêðûòûõ îðäåðîâ ñîãëàñíî óñëîâèÿì |
//-------------------------------------------------------------------+
int CountOpOrd(int Typ=-1,int Magik=-1){int count=0;
for(int i=0;i<OrdersTotal();i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()==Symbol()){
if(OrderMagicNumber()==Magik){
if(OrderType()==Typ){
if(OrderCloseTime()==0){
count++;
}
}
}
}
}
}
return(count);
}
//-----------------------------------------------------------------------------+
// Ôóíêöèÿ êîíòðîëÿ íîâîãî áàðà |
//-----------------------------------------------------------------------------+
bool NewBar(){
static int PrevTime=0;
if (PrevTime==Time[0]) return(false);
PrevTime=Time[0];
return(true);}
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
---