Price Data Components
Orders Execution
Indicators Used
0
Views
0
Downloads
0
Favorites
2dtev8c6wy_v1_4
//+------------------------------------------------------------------+
//| Çàìîê v1.0.mq4 |
//| Copyright © 2012, Áû÷êîâ Ýäóàðä Þðüåâè÷ |
//| http://edik1975@bk.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, Áû÷êîâ Ýäóàðä Þðüåâè÷"
#property link "http://edik1975@bk.ru"
#include <stderror.mqh>
#include <stdlib.mqh>
extern int Magic = 88;
extern string C_âàëþòîé = "Âàëþòà";
extern bool Îáðàòíàÿ_êîððåëÿöèÿ = false;
extern datetime Îïòèìèçèðîâàòü =D'17.09.2012 00:00';
extern int Îïòèìèçèðîâàòü_êàæäûå = 30,
ma_method = 1,
applied_price = 6;
extern double Lot = 0.1;
double signal[200];double tses[100];
double vkl,Profit1,var,punn,opt,rek_period,ploho,sstop,time,timfr_rek,sdelok;
double correl_1_2,correl_M1,correl_M5,correl_M15,correl_M30,correl_H1,correl_H4;
double eror1,eror2,eror11,eror22,closs,Lot1,Lot2;
int Áàðû_îïòèìèçàöèè,c;
string sd,osnval;
//-----------------------------------------------------------------------------------------------------
int start()
{
vklutenie();compins();
osnval=Symbol( );
Áàðû_îïòèìèçàöèè=iBarShift(osnval,0,Îïòèìèçèðîâàòü,FALSE);
if(Seconds()==30){time=time+1;}
if(time>=Îïòèìèçèðîâàòü_êàæäûå && C_âàëþòîé!="Âàëþòà" && vkl==0){opt=0;time=0;}
//-----------------------------------------------------------------------------------------------------
for(int k=0;k<ObjectsTotal();k++)
{
if(ObjectGet(ObjectName(k),OBJPROP_ARROWCODE)==SYMBOL_THUMBSDOWN) {ploho = true;}
if(ObjectGet(ObjectName(k),OBJPROP_ARROWCODE)==SYMBOL_STOPSIGN) {sstop =true;}
}
if(((ploho == true && sstop ==true)||opt==0)&& C_âàëþòîé!="Âàëþòà"){rek_period=0;punn=0;optimizator();ObjectsDeleteAll(EMPTY, OBJ_ARROW);
ploho = FALSE; sstop = FALSE;opt=1;}
//-----------------------------------------------------------------------------------------------------
sd="\n\n"+osnval+" > "+C_âàëþòîé;
if(timfr_rek!=0)
{
if(timfr_rek==1){sd=sd+ "\n Ðàáîòàåì ïî>>>>>> Êîððåëÿöèÿ M1 = "+DoubleToStr(correl_M1/0.01,0);}else
{sd=sd+ "\n Êîððåëÿöèÿ M1 = "+DoubleToStr(correl_M1/0.01,0);}
if(timfr_rek==5){sd=sd+ "\n Ðàáîòàåì ïî>>>>>> Êîððåëÿöèÿ M5 = "+DoubleToStr(correl_M5/0.01,0);}else
{sd=sd+ "\n Êîððåëÿöèÿ M5 = "+DoubleToStr(correl_M5/0.01,0);}
if(timfr_rek==15){sd=sd+"\n Ðàáîòàåì ïî>>>>>> Êîððåëÿöèÿ M15 = "+DoubleToStr(correl_M15/0.01,0);}else
{sd=sd+ "\n Êîððåëÿöèÿ M15 = "+DoubleToStr(correl_M15/0.01,0);}
if(timfr_rek==30){sd=sd+"\n Ðàáîòàåì ïî>>>>>> Êîððåëÿöèÿ M30 = "+DoubleToStr(correl_M30/0.01,0);}else
{sd=sd+ "\n Êîððåëÿöèÿ M30 = "+DoubleToStr(correl_M30/0.01,0);}
if(timfr_rek==60){sd=sd+"\n Ðàáîòàåì ïî>>>>>> Êîððåëÿöèÿ H1 = "+DoubleToStr(correl_H1/0.01,0);}else
{sd=sd+ "\n Êîððåëÿöèÿ H1 = "+DoubleToStr(correl_H1/0.01,0);}
if(timfr_rek==240){sd=sd+"\n Ðàáîòàåì ïî>>>>>> Êîððåëÿöèÿ H4 = "+DoubleToStr(correl_H4/0.01,0);}else
{sd=sd+ "\n Êîððåëÿöèÿ H4 = "+DoubleToStr(correl_H4/0.01,0);}
}
sd="\n\nÑÏÐÅÄ "+osnval+" "+ DoubleToStr(MarketInfo(osnval,MODE_SPREAD),0)+" Ëîò "+ DoubleToStr(Lot1,2)+
"\nÑÏÐÅÄ "+C_âàëþòîé+" "+DoubleToStr(MarketInfo(C_âàëþòîé,MODE_SPREAD),0)+" Ëîò "+ DoubleToStr(Lot2,2)+sd
+"\n\nÁàëàíñ ïîçèöèé "+DoubleToStr(Profit1,2)
+"\n\nÎïòèìèçàöèÿ ñ "+DoubleToStr(TimeDay(Time[Áàðû_îïòèìèçàöèè]),0)+"."
+DoubleToStr(TimeMonth(Time[Áàðû_îïòèìèçàöèè]),0)+"."
+DoubleToStr( TimeYear(Time[Áàðû_îïòèìèçàöèè]),0)+"ã."
+"\nÊîëè÷åñòâî ïóíêòîâ "+DoubleToStr(punn,5)
+"\nÊîëè÷åñòâî âõîäîâ â ðûíîê "+DoubleToStr(sdelok,0)
+"\nÏåðèîä ÌÀ "+DoubleToStr(rek_period,0);
Comment(sd);
for(int n=1;n<=6;n++)
{
if(n==1){c=1;}if(n==2){c=5;}if(n==3){c=15;}if(n==4){c=30;}if(n==5){c=60;}if(n==6){c=240;}
ArrayCopySeries(tses,MODE_CLOSE,osnval,c);
ArrayCopy(signal,tses,0,1,100);
ArrayCopySeries(tses,MODE_CLOSE,C_âàëþòîé,c);
ArrayCopy(signal,tses,100,1,100);
correl();
if(n==1){correl_M1=correl_1_2;}
if(n==2){correl_M5=correl_1_2;}
if(n==3){correl_M15=correl_1_2;}
if(n==4){correl_M30=correl_1_2;}
if(n==5){correl_H1=correl_1_2;}
if(n==6){correl_H4=correl_1_2;}
}
//-----------------------------------------------------------------------------------------------------
double ma_osnval=iMA(osnval,timfr_rek,rek_period,0,ma_method,applied_price,0);
double ma_C_âàëþòîé=iMA(C_âàëþòîé,timfr_rek,rek_period,0,ma_method,applied_price,0);
//-----------------------------------------------------------------------------------------------------
if(Îáðàòíàÿ_êîððåëÿöèÿ == false)
{
if(vkl==0 && eror1!=-1 && eror2!=-1 && eror11!=-1 && eror22!=-1 )
{
if(ma_osnval>MarketInfo(osnval,MODE_ASK) && ma_C_âàëþòîé<MarketInfo(C_âàëþòîé,MODE_BID) )
{eror1=OrderSend(osnval,OP_BUY, Lot1,MarketInfo(osnval,MODE_ASK),2,0,0,"Çàìîê v1.4",Magic,3);
eror22=OrderSend(C_âàëþòîé,OP_SELL, Lot2,MarketInfo(C_âàëþòîé,MODE_BID),2,0,0,"Çàìîê v1.4",Magic,3);var=1;}
if(ma_osnval<MarketInfo(osnval,MODE_BID) && ma_C_âàëþòîé>MarketInfo(C_âàëþòîé,MODE_ASK) )
{eror11=OrderSend(osnval,OP_SELL, Lot1,MarketInfo(osnval,MODE_BID),2,0,0,"Çàìîê v1.4",Magic,3);
eror2=OrderSend(C_âàëþòîé,OP_BUY, Lot2,MarketInfo(C_âàëþòîé,MODE_ASK),2,0,0,"Çàìîê v1.4",Magic,3);var=2;}
}
if(vkl!=0)
{
if(ma_osnval>MarketInfo(osnval,MODE_ASK) && ma_C_âàëþòîé<MarketInfo(C_âàëþòîé,MODE_BID) && var==2)
{CLOSEORDER();}
if(ma_osnval<MarketInfo(osnval,MODE_BID) && ma_C_âàëþòîé>MarketInfo(C_âàëþòîé,MODE_ASK) && var==1)
{CLOSEORDER();}
}
}
if(Îáðàòíàÿ_êîððåëÿöèÿ == true)
{
if(vkl==0 && eror1!=-1 && eror2!=-1 && eror11!=-1 && eror22!=-1 )
{
if(ma_osnval>MarketInfo(osnval,MODE_ASK) && ma_C_âàëþòîé>MarketInfo(C_âàëþòîé,MODE_ASK) )
{eror1=OrderSend(osnval,OP_BUY, Lot1,MarketInfo(osnval,MODE_ASK),2,0,0,"Çàìîê v1.4",Magic,3);
eror2=OrderSend(C_âàëþòîé,OP_BUY, Lot2,MarketInfo(C_âàëþòîé,MODE_ASK),2,0,0,"Çàìîê v1.4",Magic,3);var=1;}
if(ma_osnval<MarketInfo(osnval,MODE_BID) && ma_C_âàëþòîé<MarketInfo(C_âàëþòîé,MODE_BID) )
{eror11=OrderSend(osnval,OP_SELL, Lot1,MarketInfo(osnval,MODE_BID),2,0,0,"Çàìîê v1.4",Magic,3);
eror22=OrderSend(C_âàëþòîé,OP_SELL, Lot2,MarketInfo(C_âàëþòîé,MODE_BID),2,0,0,"Çàìîê v1.4",Magic,3);var=2;}
}
if(vkl!=0)
{
if(ma_osnval>MarketInfo(osnval,MODE_ASK) && ma_C_âàëþòîé>MarketInfo(C_âàëþòîé,MODE_ASK) && var==2)
{CLOSEORDER();}
if(ma_osnval<MarketInfo(osnval,MODE_BID) && ma_C_âàëþòîé<MarketInfo(C_âàëþòîé,MODE_BID) && var==1)
{CLOSEORDER();}
}
}
//-----------------------------------------------------------------------------------------------------
if(eror1==-1 ){eror1=OrderSend(osnval,OP_BUY, Lot1,MarketInfo(osnval,MODE_ASK),2,0,0,"Çàìîê v1.4",Magic,3);}
if(eror11==-1 ){eror11=OrderSend(osnval,OP_SELL, Lot1,MarketInfo(osnval,MODE_BID),2,0,0,"Çàìîê v1.4",Magic,3);}
if(eror2==-1 ){eror2=OrderSend(C_âàëþòîé,OP_BUY, Lot2,MarketInfo(C_âàëþòîé,MODE_ASK),2,0,0,"Çàìîê v1.4",Magic,3);}
if(eror22==-1 ){eror22=OrderSend(C_âàëþòîé,OP_SELL, Lot2,MarketInfo(C_âàëþòîé,MODE_BID),2,0,0,"Çàìîê v1.4",Magic,3);}
//-----------------------------------------------------------------------------------------------------
vkl=0;
return(0);
}
//--------------------------------------------------------------------
void vklutenie()
{
int tip,a;
Profit1=0;
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i, SELECT_BY_POS)==true)
{
tip = OrderType();
if (OrderMagicNumber()==Magic)
{
vkl=1; a=a+1;
Profit1=Profit1+OrderProfit( );
if( osnval==OrderSymbol( ) && tip==OP_BUY){var=1;}
if( osnval==OrderSymbol( ) && tip==OP_SELL){var=2;}
}
}
}
if (a>=2) { vkl=1;}
if (a==0) {closs=0;}
if (closs==1) {CLOSEORDER();}
}
//-------------------------------------------------------------------------------------------------------
void CLOSEORDER()
{
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (Magic==OrderMagicNumber())
{
if (OrderType()==OP_BUY)
{OrderClose(OrderTicket(),OrderLots(),MarketInfo(osnval,MODE_BID),3,CLR_NONE);
OrderClose(OrderTicket(),OrderLots(),MarketInfo(C_âàëþòîé,MODE_BID),3,CLR_NONE);}
if (OrderType()==OP_SELL)
{OrderClose(OrderTicket(),OrderLots(),MarketInfo(osnval,MODE_ASK),3,CLR_NONE);
OrderClose(OrderTicket(),OrderLots(),MarketInfo(C_âàëþòîé,MODE_ASK),3,CLR_NONE);}
}
}
}
closs=1;
}
//------------------âû÷èñëÿåì êîððåëÿöèþ-------------------------------------------------------
void correl()
{
double a1,a2;
double thisl1_2;
double sumraz_1, sumraz_2;
double znamen1_2;
for (int q=0;q<100;q++)
{
a1=a1+signal[q];
a2=a2+signal[q+100];
}
a1=a1/100;
a2=a2/100;
for (int q1=0;q1<100;q1++)
{
thisl1_2=thisl1_2+(signal[q1]-a1)*(signal[q1+100]-a2);
}
for (int q2=0;q2<100;q2++)
{
sumraz_1=sumraz_1+MathPow((signal[q2]-a1),2);
sumraz_2=sumraz_2+MathPow((signal[q2+100]-a2),2);
}
if(sumraz_1!=0 && sumraz_2!=0) {znamen1_2=MathSqrt(sumraz_1)*MathSqrt(sumraz_2);}
if(sumraz_1!=0 && sumraz_2!=0) {correl_1_2=thisl1_2/znamen1_2;}
}
//------------------------------êîìïèíñàöèÿ ëîòîì---------------------------------------------------------
void compins()
{
double osn_sv,c_val_sv;
for (int q=0;q<=100;q++)
{
osn_sv=osn_sv+( iHigh(osnval,timfr_rek,q)- iLow(osnval,timfr_rek,q));
c_val_sv=c_val_sv+( iHigh(C_âàëþòîé,timfr_rek,q)- iLow(C_âàëþòîé,timfr_rek,q));
}
osn_sv=osn_sv/100;
c_val_sv=c_val_sv/100;
if(osn_sv>c_val_sv){Lot2=Lot*(osn_sv/c_val_sv);Lot1=Lot;}
if(osn_sv<c_val_sv){Lot1=Lot*(c_val_sv/osn_sv);Lot2=Lot;}
if(osn_sv==c_val_sv){Lot1=Lot;Lot2=Lot;}
}
//------------------------------îðïòèìèçàòîð--------------------------------------------------------------
void optimizator()
{
punn=0;timfr_rek=0;rek_period=0;sdelok=0;
double a,b,pun1,pun2,pun,spread_osn,spread_C_âàë,sdelok1;
int vari,g1;
ObjectCreate("c",OBJ_LABEL ,0,0,0,0,0,0,0);
ObjectSetText("c","ÎÏÒÈÌÈÇÀÖÈß" , 50, "Times New Roman",Red );
ObjectSet("c",OBJPROP_TIMEFRAMES,NULL);
ObjectSet("c",OBJPROP_XDISTANCE,250);
ObjectSet("c",OBJPROP_YDISTANCE,100);
spread_osn=MarketInfo(osnval,MODE_SPREAD)*MarketInfo(osnval,MODE_POINT);
spread_C_âàë=MarketInfo(C_âàëþòîé,MODE_SPREAD)*MarketInfo(C_âàëþòîé,MODE_POINT);
for (int g=1;g<=6;g++)
{
for (int u=2;u<=150;u++)
{
pun=0;sdelok1=0;
for (int y=Áàðû_îïòèìèçàöèè;y>=0;y--)
{
if(g==1){g1=1;}if(g==2){g1=5;}if(g==3){g1=15;}if(g==4){g1=30;}if(g==5){g1=60;}if(g==6){g1=240;}
double ma_osn=iMA(osnval,g1,u,0,ma_method,applied_price,y);
double ma_C_âàë=iMA(C_âàëþòîé,g1,u,0,ma_method,applied_price,y);
double cen_osn= iMA(osnval,g1,1,0,ma_method,applied_price,y);
double cen_C_âàë= iMA(C_âàëþòîé,g1,1,0,ma_method,applied_price,y);
//-----------------------------------------------------------------------------------------------------------------
if(Îáðàòíàÿ_êîððåëÿöèÿ == false)
{
if(ma_osn>cen_osn+spread_osn && ma_C_âàë<cen_C_âàë-spread_C_âàë && (vari==2||vari==0))
{
vari=1;
if(a==0 && b==0){a=cen_osn+spread_osn;b=cen_C_âàë-spread_C_âàë;} else
{
sdelok1=sdelok1+1;
pun1=a-cen_osn;pun2=cen_C_âàë-b;pun=pun+(pun1+pun2);
a=cen_osn+spread_osn;b=cen_C_âàë-spread_C_âàë;
}
}
if(ma_osn<cen_osn-spread_osn && ma_C_âàë>cen_C_âàë+spread_C_âàë && (vari==1||vari==0))
{
vari=2;
if(a==0 && b==0){a=cen_osn-spread_osn;b=cen_C_âàë+spread_C_âàë;} else
{
sdelok1=sdelok1+1;
pun1=cen_osn-a;pun2=b-cen_C_âàë;pun=pun+(pun1+pun2);
a=cen_osn-spread_osn;b=cen_C_âàë+spread_C_âàë;
}
}
}
if(Îáðàòíàÿ_êîððåëÿöèÿ == true)
{
if(ma_osn>cen_osn+spread_osn && ma_C_âàë>cen_C_âàë+spread_C_âàë && (vari==2||vari==0))
{
vari=1;
if(a==0 && b==0){a=cen_osn+spread_osn;b=cen_C_âàë+spread_C_âàë;} else
{
sdelok1=sdelok1+1;
pun1=a-cen_osn;pun2=b-cen_C_âàë;pun=pun+(pun1+pun2);
a=cen_osn+spread_osn;b=cen_C_âàë+spread_C_âàë;
}
}
if(ma_osn<cen_osn-spread_osn && ma_C_âàë<cen_C_âàë-spread_C_âàë && (vari==1||vari==0))
{
vari=2;
if(a==0 && b==0){a=cen_osn-spread_osn;b=cen_C_âàë-spread_C_âàë;} else
{
sdelok1=sdelok1+1;
pun1=cen_osn-a;pun2=cen_C_âàë-b;pun=pun+(pun1+pun2);
a=cen_osn-spread_osn;b=cen_C_âàë-spread_C_âàë;
}
}
}
//-----------------------------------------------------------------------------------------------------------------
}
if(pun>punn && sdelok1>=sdelok){punn=pun;rek_period=u;timfr_rek=g1;sdelok=sdelok1;}
}
}
ObjectDelete("c");
}
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
---