Orders Execution
Miscellaneous
0
Views
0
Downloads
0
Favorites
martin-log
//íííííííííííííííííííííííííííí//
// 2009ã MARTIN //
//íííííííííííííííííííííííííííí//
extern bool test=false;
extern bool open_buy=true;
extern bool open_sell=true;
extern double chag=36; // íà÷àëüíûé øàã //31 ~ 30-37
extern double prf_plus=56; // îò íåéòð. äî óðîâíÿ ïðîôèòà // ~ 40-50 ïò.
extern double k_chag=1.4; // êîýôô. óâåëè÷åíèå øàãà ~ 1-2;
extern int risk=3; // òî÷êà ðèñêà 1-9
extern double Lots = 0.01; // íà÷àëüíûé ëîò
extern double k_lot=1.7; // óâåëè÷åíèå îáúåìà ~ 1.5-2;
extern double lot_max=100; // ìàêñèìàëüíûé ëîò
int magic = 98764;
int kn=9;
double cann[],can_2[],pric[],pun[],prof[];// cann øàã: cann[0] âåñü êàíàë: pric ïðîâàë: pun ïðîâàë/ïðîôèò íîëü:
int kh,c,as,ab,asl,abl,objtot,tm,minStop,can,stp,wvb,wvs,b_ind,s_ind;
double ad,k,lg,max,min,max_ind,max_ind2,min_ind,min_ind2,pnk,sel_prs,buy_prs,sel_ind,buy_ind,or_bu,or_sl,objbu,objsl;
bool sos_s, sos_b, bb=false, ss=false;
int init() {
//íííííííííííííííííííííííííííí//
//prf_plus=chag;
ArrayResize(cann,kn+1); ArrayResize(can_2,kn+1);
ArrayResize(pric,kn+1); ArrayResize(pun,kn+1);
ArrayInitialize(cann,0.0); ArrayInitialize(can_2,0.0);
ArrayInitialize(pric,0.0); ArrayInitialize(pun,0.0);
ArrayResize(prof,kn+1); ArrayInitialize(prof,0.0);
lg=k_chag;
ad=Lots; kh=0;
while(ad<lot_max){ad=ad*2; kh++;} // kh êîë-âî îðäåðîâ
for(int z=1;z<=kn;z++){cann[z]=NormalizeDouble(chag*MathPow(lg,z-1),0); if(z<=kh-1)cann[0]=cann[0]+cann[z];
for(int v=1;v<=z;v++){can_2[v]=can_2[v]+cann[z]; if(v==z){for(int x=1;x<=z;x++)
{pric[z]=pric[z]+can_2[x]*MathPow(2,x-1);}pun[z]=NormalizeDouble(pric[z]/(2*MathPow(2,z)-1),0);
prof[z+1]=((pun[z]+prf_plus)*(2*MathPow(2,z)-1)-pric[z])*Lots*10;}}}prof[1]=prf_plus*Lots*10;
if(!IsTesting()){buy_prs=GlobalVariableGet("lg_buy_prs"); buy_ind=GlobalVariableGet("lg_buy_ind");
sel_prs=GlobalVariableGet("lg_sel_prs"); sel_ind=GlobalVariableGet("lg_sel_ind");}
//íííííííííííííííííííííííííííí//
if(Digits==2) k=1.0;
if(Digits==3) k=10.0;
if(Digits==4) k=1.0;
if(Digits==5) k=10.0;
minStop=MarketInfo(Symbol(),MODE_STOPLEVEL);
c=0;
chag=chag*k;
stp=chag*200; can=chag*kn;
//can=cann[0];
//íííííííííííííííííííííííííííí//
return (0);
}
//íííííííííííííííííííííííííííí
int start() {
string asd,sret,bch,bpf,bs;
int kk,err,tick_b,tick_s,tikt_b,tikt_s,tick_slm,y_buy,y_sel,dist_s,dist_b,
tick_blm,i,y,Imax,Imin,Imax_1,Imin_1,Imax_2,Imin_2,Itm,ghb,ghs;
double st,pf,lot,prib,price_b,tkprof_b,lots_b,price_s,tkprof_s,chag_sel,chag_buy,gbv,ubt,abc,
lots_s,stp_b,stp_s,prc,max_1,min_1,max_2,min_2,dt,dt2,mnn,mxx,prs_s,prs_b,prf_bu,prf_sl;
bool obj=false, op_sl=false, op_by=false, obj_a=false;
//=================//
if(Bars-c>1) c=0; // ïîêà íå äîãðóçèòüñÿ èñòîðèÿ
i=Bars-c; c=Bars;
//============// äîáàâèòü íåìíîãî ñîëè //=================//
for (y=0;y<OrdersTotal();y++){OrderSelect(y,0);
if(Symbol()!=OrderSymbol()||OrderMagicNumber()!=magic) continue;
if (OrderType() == 0 || OrderType() == 1) abc=abc + OrderProfit() + OrderSwap() + OrderCommission();
if (OrderType()==OP_BUY) y_buy++;
if (OrderType()==OP_SELL) y_sel++;
if (OrderType()==OP_BUY && tick_b<OrderTicket()) {
tick_b=OrderTicket();
price_b=OrderOpenPrice();
if(lots_b==OrderLots())ghb=1;
lots_b=OrderLots();
tkprof_b=OrderTakeProfit();}
if (OrderType()==OP_SELL && tick_s<OrderTicket()) {
tick_s=OrderTicket();
price_s=OrderOpenPrice();
if(lots_s==OrderLots())ghs=1;
lots_s=OrderLots();
tkprof_s=OrderTakeProfit();}
//================= äëÿ ñòîïà
if(OrderType()==OP_BUY&&(tikt_b>OrderTicket()||tikt_b==0)){tikt_b=OrderTicket(); stp_b=OrderStopLoss();
prs_b=OrderOpenPrice(); if(stp_b!=OrderOpenPrice()-stp*Point) stp_b=OrderOpenPrice()-stp*Point; } //äëÿ ñòîïà
if(OrderType()==OP_SELL&&(tikt_s>OrderTicket()||tikt_s==0)){tikt_s=OrderTicket(); stp_s=OrderStopLoss();
prs_s=OrderOpenPrice(); if(stp_s!=OrderOpenPrice()+stp*Point) stp_s=OrderOpenPrice()+stp*Point;} //äëÿ ñòîïà
if (OrderType()==OP_BUYLIMIT) tick_blm = OrderTicket();
if (OrderType()==OP_SELLLIMIT) tick_slm = OrderTicket();}
if(ghb==1)y_buy--; if(ghs==1)y_sel--;
//==========//
chag_sel=chag; chag_buy=chag;
if(y_buy>0)chag_buy=NormalizeDouble(cann[y_buy],0);
if(y_sel>0)chag_sel=NormalizeDouble(cann[y_sel],0);
//=====// âèðòóàëêà //=====//
if(Ask>buy_prs && or_bu<=0) {buy_prs=Ask; buy_ind=Ask;}
if((Ask<buy_prs && Ask<buy_ind) || buy_ind==0) buy_ind=Ask;
or_bu=MathFloor((buy_prs-buy_ind)/Point/chag);
if((Bid-buy_ind)/Point>=MathFloor(prf_plus+chag/2) && or_bu>0){buy_prs=Ask; buy_ind=Ask; or_bu=0;}
if(tick_b==0 && b_ind>0){buy_prs=Ask; buy_ind=Ask; or_bu=0;}
if((Bid<sel_prs||sel_prs==0) && or_sl<=0) {sel_prs=Bid; sel_ind=Bid;}
if(Bid>sel_prs && Bid>sel_ind) sel_ind=Bid;
or_sl=MathFloor((sel_ind-sel_prs)/Point/chag); // âèðòóàëüíûå îðäåðà
if((sel_ind-Ask)/Point>=MathFloor(prf_plus+chag/2) && or_sl>0){sel_prs=Bid; sel_ind=Bid; or_sl=0;}
if(tick_s==0 && s_ind>0) {sel_prs=Bid; sel_ind=Bid; or_sl=0;}
if(!IsTesting()){GlobalVariableSet("time",TimeLocal());
GlobalVariableSet("lg_buy_prs",buy_prs); GlobalVariableSet("lg_buy_ind",buy_ind);
GlobalVariableSet("lg_sel_prs",sel_prs); GlobalVariableSet("lg_sel_ind",sel_ind);}
//==========//
if(prs_b!=0)mxx=prs_b; if(prs_s!=0)mnn=prs_s;
max_ind=mxx-can*Point; min_ind=mnn+can*Point;
//=======// âàðèòü 15 ìèí //============//
if(tick_b>0) bb=false; if(tick_s>0) ss=false;
if(tick_b==0 && (or_bu!=risk || risk==0)) bb=true;
if(tick_s==0 && (or_sl!=risk || risk==0)) ss=true;
if(or_bu==risk && tick_b==0 && bb==true) op_by=true;
if(or_sl==risk && tick_s==0 && ss==true) op_sl=true;
//=====// sound //====//
if(or_bu!=risk-1 && or_sl!=risk-1) wvb=0;
if(or_bu!=risk && or_sl!=risk) wvs=0;
if((or_bu==risk-1 || or_sl==risk-1) && wvb==0) {PlaySound("vot.wav"); wvb=1;}
if((or_bu==risk || or_sl==risk) && wvs==0) {PlaySound("ñìîòðè.wav"); wvs=1;}
b_ind=tick_b; s_ind=tick_s;
//==================// äëÿ open buy
if(tick_b==0){ if(tick_blm!=0){OrderDelete(tick_blm); err=GetLastError(); if(err!=0){fn(err);PlaySound("alert2.wav");Alert("buy delete");}} // open_buy
if(open_buy&&op_by){kk=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"mg"+magic,magic); err=GetLastError(); if(err!=0){fn(err);PlaySound("alert2.wav"); Alert("open buy");}
if(kk>0){OrderSelect(kk,SELECT_BY_TICKET); st=OrderOpenPrice()-stp*Point; pf=OrderOpenPrice()+prf_plus*Point; bb=false;
OrderModify(OrderTicket(),OrderOpenPrice(),st,pf,0); err=GetLastError(); if(err!=0){fn(err);PlaySound("alert2.wav"); Alert("open buy modify");}
} // äëÿ kk>0
} // äëÿ open_buy
} // äëÿ tick_b==0
if(tick_s==0){ if(tick_slm!=0){OrderDelete(tick_slm); err=GetLastError(); if(err!=0){fn(err);PlaySound("alert2.wav");Alert("sell delete");}} // open_sell
if(open_sell&&op_sl){kk=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"mg"+magic,magic); err=GetLastError(); if(err!=0){fn(err);PlaySound("alert2.wav");Alert("open sell");}
if(kk>0){OrderSelect(kk,SELECT_BY_TICKET); st=OrderOpenPrice()+stp*Point; pf=OrderOpenPrice()-prf_plus*Point; ss=false;
OrderModify(OrderTicket(),OrderOpenPrice(),st,pf,0); err=GetLastError(); if(err!=0){fn(err);PlaySound("alert2.wav"); Alert("open sell modify");}
} // äëÿ kk>0
} // äëÿ open_sell
} // äëÿ tick_s==0
//==================// äëÿ buy_limit //===========================//
if(tick_b>0&&tick_blm==0&&lots_b*2<lot_max){
prc=price_b-chag_buy*Point; pf=prc+(prf_plus+NormalizeDouble(pun[y_buy],0))*Point; lot=lots_b*k_lot; if(lots_b==0.01)lot=0.02;
if((Bid-prc)/Point>=minStop){
OrderSend(Symbol(),OP_BUYLIMIT,lot,prc,3,stp_b,pf,"mg"+magic,magic,0);
err=GetLastError(); if(err!=0){fn(err);PlaySound("alert2.wav"); Alert("buy limit");}}}
//==================// äëÿ sell_limit //==========================//
if(tick_s>0&&tick_slm==0&&lots_s*2<lot_max){
prc=price_s+chag_sel*Point; pf=prc-(prf_plus+NormalizeDouble(pun[y_sel],0))*Point; lot=lots_s*k_lot; if(lots_s==0.01)lot=0.02;
if((prc-Ask)/Point>=minStop){
OrderSend(Symbol(),OP_SELLLIMIT,lot,prc,3,stp_s,pf,"mg"+magic,magic,0);
err=GetLastError(); if(err!=0){fn(err);PlaySound("alert2.wav"); Alert("sell limit");}}}
//==================// ìîäèô îòêðûòûõ buy îðäåðîâ //===========================//
for (y=0;y<OrdersTotal();y++){OrderSelect(y,0);if(Symbol()!=OrderSymbol()||OrderMagicNumber()!=magic) continue;
st=NormalizeDouble(OrderStopLoss(),Digits); pf=NormalizeDouble(OrderTakeProfit(),Digits);
stp_b=NormalizeDouble(stp_b,Digits); tkprof_b=NormalizeDouble(tkprof_b,Digits);
stp_s=NormalizeDouble(stp_s,Digits); tkprof_s=NormalizeDouble(tkprof_s,Digits);
if(OrderType()==OP_BUY&&tick_b!=0&& (stp_b!=st||tkprof_b!=pf)) {
OrderModify(OrderTicket(), OrderOpenPrice(), stp_b, tkprof_b,0);
err=GetLastError(); if(err!=0){fn(err);PlaySound("alert2.wav"); Alert("buy modify");}}
//==================// ìîäèô îòêðûòûõ sell îðäåðîâ //===========================//
if(OrderType()==OP_SELL&&tick_s!=0 && (stp_s!=st||tkprof_s!=pf)) {
OrderModify(OrderTicket(), OrderOpenPrice(), stp_s, tkprof_s,0);
err=GetLastError(); if(err!=0){fn(err);PlaySound("alert2.wav"); Alert("sell modify");}}}
//=============================================//
if(!test){Comment(" gubaha martin. ",TimeToStr(TimeLocal(),4),
"\n", " Òåêóùèé ïðèáûëü= ",NormalizeDouble(abc,2)," $ ",
"\n", " Òåêóùèé áàëàíñ = ", AccountBalance(), " $ ");
//===============// ïàëî÷êè òî÷å÷êè ñòðåëî÷êè //==========//
if(or_bu==0 && ObjectFind("clsbuy")==0) ObjectDelete("clsbuy"); //-1 íåò îáúåêòà , 0(else) - åñòü îáúåêò.
if(or_bu>0 && (i>=1 || objtot!=ObjectsTotal() || objbu!=buy_ind+MathFloor(prf_plus+chag/2)*Point)){
objbu=buy_ind+MathFloor(prf_plus+chag/2)*Point;
if(ObjectFind("clsbuy")==-1) //-1 íåò ëèíèè, 0(else) - åñòü ëèíèÿ.
{ObjectCreate("clsbuy",2,0,Time[0]+Period()*120,objbu,Time[0]+Period()*240,objbu);
ObjectSet("clsbuy",10,0);ObjectSet("clsbuy",6,Magenta); ObjectSet("clsbuy",8,3);}
else{ObjectSet("clsbuy",1,objbu); ObjectSet("clsbuy",3,objbu);
ObjectSet("clsbuy",0,Time[0]+Period()*120); ObjectSet("clsbuy",2,Time[0]+Period()*240);}}
//=========================//
if(or_sl==0 && ObjectFind("clsel")==0) ObjectDelete("clsel"); //-1 íåò îáúåêòà , 0(else) - åñòü îáúåêò.
if(or_sl>0 && (i>=1 || objtot!=ObjectsTotal() || objsl!=sel_ind-MathFloor(prf_plus+chag/2)*Point)){
objsl=sel_ind-MathFloor(prf_plus+chag/2)*Point;
if(ObjectFind("clsel")==-1) //-1 íåò ëèíèè, 0(else) - åñòü ëèíèÿ.
{ObjectCreate("clsel",2,0,Time[0]+Period()*360,objsl,Time[0]+Period()*480,objsl);
ObjectSet("clsel",10,0); ObjectSet("clsel",6,Magenta); ObjectSet("clsel",8,3);}
else{ObjectSet("clsel",1,objsl); ObjectSet("clsel",3,objsl);
ObjectSet("clsel",0,Time[0]+Period()*360); ObjectSet("clsel",2,Time[0]+Period()*480);}}
//=========================//
if(i>=1||objtot!=ObjectsTotal()||mxx!=buy_prs||mnn!=sel_prs)obj=true;
mxx=buy_prs; mnn=sel_prs;
max_ind=mxx-can*Point; min_ind=mnn+can*Point;
max_ind2=max_ind-((cann[0]-(kn-risk)*chag)*Point);
min_ind2=min_ind+((cann[0]-(kn-risk)*chag)*Point);
//======================// ðàçíûå ôóôåëêè //=======================//
if(obj==true){string ln; int tm, tm2, col, shn; double kln;
//==========//
for(y=0;y<=21;y++){ln="kr_"+DoubleToStr(y,0);
if(y<=9){kln=max_ind+y*chag*Point; tm=120; tm2=240;}
if(y>9&&y<20){kln=mnn+(y-10)*chag*Point; tm=360; tm2=480;}
if(y==20){kln=max_ind2; tm=120; tm2=240; col=Teal;}
if(y==21){kln=min_ind2; tm=360; tm2=480; col=FireBrick;}
if(y==9-risk || y==10+risk) {col=Lime; shn=3;} else {col=DarkGoldenrod; shn=0;}
if(ObjectFind(ln)==-1) //-1 íåò ëèíèè, 0(else) - åñòü ëèíèÿ.
{ObjectCreate(ln,2,0,Time[0]+Period()*tm,kln,Time[0]+Period()*tm2,kln);
ObjectSet(ln,10,0);ObjectSet(ln,6,col); ObjectSet(ln,8,shn);}
else{ObjectSet(ln,1,kln);ObjectSet(ln,3,kln);ObjectSet(ln,6,col); ObjectSet(ln,8,shn);
ObjectSet(ln,0,Time[0]+Period()*tm);ObjectSet(ln,2,Time[0]+Period()*tm2);}} //êîíåö öèêëîâ
//==========//
if(ObjectFind("max")==-1)
{ObjectCreate("max",2,0,Time[0]+Period()*240,mxx,Time[0]+Period()*240,max_ind);
ObjectSet("max",10,0);ObjectSet("max",6,DeepSkyBlue);
ObjectSet("max",8,2);}
else{ObjectSet("max",1,mxx); ObjectSet("max",0,Time[0]+Period()*240);
ObjectSet("max",3,max_ind); ObjectSet("max",2,Time[0]+Period()*240);}
//==========//
if(ObjectFind("min")==-1)
{ObjectCreate("min",2,0,Time[0]+Period()*480,mnn,Time[0]+Period()*480,min_ind);
ObjectSet("min",10,0);ObjectSet("min",6,Red);
ObjectSet("min",8,2);}
else{ObjectSet("min",1,mnn);ObjectSet("min",0,Time[0]+Period()*480);
ObjectSet("min",3,min_ind);ObjectSet("min",2,Time[0]+Period()*480);}
//==========// max+ //==========//
if(ObjectFind("max+")==-1)
{ObjectCreate("max+",2,0,Time[0]+Period()*240,max_ind,Time[0]+Period()*240,max_ind2);
ObjectSet("max+",10,0);ObjectSet("max+",6,Teal);}
else{ObjectSet("max+",1,max_ind); ObjectSet("max+",0,Time[0]+Period()*240);
ObjectSet("max+",3,max_ind2);ObjectSet("max+",2,Time[0]+Period()*240);}
//==========// min+ //==========//
if(ObjectFind("min+")==-1)
{ObjectCreate("min+",2,0,Time[0]+Period()*480,min_ind,Time[0]+Period()*480,min_ind2);
ObjectSet("min+",10,0);ObjectSet("min+",6,FireBrick);}
else{ObjectSet("min+",1,min_ind); ObjectSet("min+",0,Time[0]+Period()*480);
ObjectSet("min+",3,min_ind2);ObjectSet("min+",2,Time[0]+Period()*480);}}}
//==========//
objtot=ObjectsTotal();
return (0);}
//==========//
int fn(int err){switch(err)
{case 1: Alert(Symbol()," ïîâòîðèâøèéñÿ ïàðàìåòð áåç îøèáêè"); break;
case 3: Alert(Symbol()," íåïðàâèëüíûå ïàðàìåòðû"); break;
case 6: Alert(Symbol()," íåò ñâÿçè ñ ñåðâåðîì"); break;
case 128: Alert(Symbol()," èñò¸ê ñðîê îæèäàíèÿ"); break;
case 129: Alert(Symbol()," íåïðàâèëüíàÿ öåíà"); break;
case 130: Alert(Symbol()," íåïðàâåëüíûå ñòîïû"); break;
case 131: Alert(Symbol()," íåïðàâèëüíûé îáú¸ì"); break;
case 132: Alert(Symbol()," ðûíîê çàêðûò"); break;
case 133: Alert(Symbol()," òîðãîâëÿ çàïðåùåíà"); break;
case 134: Alert(Symbol()," íåäîñòàòî÷íî ñðåäñòâ"); break;
case 135: Alert(Symbol()," öåíà èçìåíèëàñü"); break;
case 138: Alert(Symbol()," íîâûå öåíû"); break;
case 145: Alert(Symbol()," îðäåð ñëèøêîì áëèçêî ê ðûíêó"); break;
case 146: Alert(Symbol()," ïîäñèñòåìà òîðãîâëè çàíÿòà"); break;
case 4051: Alert(Symbol()," íåäîïóñòèìîå çíà÷åíèå,âîçìîæíî îáú¸ì.");break;
case 4107: Alert(Symbol()," íåïðàâèëüíûé ïàðàìåòð öåíû äëÿ òîðãîâîé ôóíêöèè");break;
case 4108: Alert(Symbol()," íåïðàâèëüíûé ïàðàìåòð òèêåòà");break;
default: Alert(Symbol()," îøèáêà ¹ ",err);}}
//===================================================//
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
---