Price Data Components
Orders Execution
Indicators Used
Miscellaneous
0
Views
0
Downloads
0
Favorites
Profitability Reports
AUD/USD
Oct 2024 - Jan 2025
0.00 %
Total Trades
0
Won Trades
0
Lost trades
0
Win Rate
0.0 %
Expected payoff
0.00
Gross Profit
0.00
Gross Loss
0.00
Total Net Profit
0.00
-100%
-50%
0%
50%
100%
NZD/USD
Oct 2024 - Jan 2025
0.00 %
Total Trades
0
Won Trades
0
Lost trades
0
Win Rate
0.0 %
Expected payoff
0.00
Gross Profit
0.00
Gross Loss
0.00
Total Net Profit
0.00
-100%
-50%
0%
50%
100%
Helen v2.72
//+------------------------------------------------------------------------------+
//| Helen.mq4 |
//| Copyright © 2009 gorby777 |
//| gorby_e-mail@rambler.ru |
//|Îñîáîå ÑÏÀÑÈÁÎ Êèìó Èãîðþ Â. (aka KimIV, http://www.kimiv.ru) çà åãî ôóíêöèè |
//+------------------------------------------------------------------------------+
#property copyright "Copyright © 2009 gorby777"
#property link "gorby_e-mail@rambler.ru"
extern int Hour_ = 0; // ×àñ íà÷àëà òîðãîâëè
extern int Delta_ = 25; // Óðîâåíü îò áàçîâîé öåíû äî öåíû îòêðûòèÿ îòëîæåííèêà
extern int StopLoss_ = 70; // Ñòîïëîññ
extern int TakeProfit_ = 150; // Òåéêïðîôèò
extern int TrailingStop_ = 50; // Ðàçìåð òðàëà
extern int shift_ = 0;
//extern int Range=50;
extern string s1 = "==Íàñòðîéêà ÌÌ==";
extern double kLots = 1.0; // èíäèâèäóàëüíûé ìíîæèòåëü ê êîýôô-òó ðèñêà
extern bool MM = true; // È òàê ïîíÿòíî
extern bool UseTrailing = True; // Èñïîëüçîâàòü òðàë
extern bool send_mail = false; // Îòïðàâêà ïî÷òû
double ContinuousLot = 0.1; // Ðàçìåð ïîñòîÿííîãî ëîòà ïðè ÌÌ=false
extern string s3 = "==Ðåæèì òðåéäèíãà==";
extern bool StopTrading = false; // Ïðèîñòàíîâêà òîðãîâëè âðó÷íóþ
static bool TradeAllowed = true; // Îñòàíîâêà òîðãîâëè ñîâåòíèêîì
bool TrailProfitOnly = true; // Òðàëèòü òîëüêî ïðîôèò
int TrailingStep = 3; // Øàã òðàëà â ïóíêòàõ
int Range = 100; // Ñðåäíèé îáðàçöîâûé äèàïàçîí
int TF = 60; // Òàéìôðåéì
int slow = 77; // Ìåäëåííàÿ ÌÀ â ôóíêöèè òðåíäà
int fast = 21; // Áûñòðàÿ ÌÀ â ôóíêöèè òðåíäà
bool Check_5Digits = false; // Ðàáîòà ñ 5-þ çíàêàìè â êîòèðîâêàõ
int modeSetOrders = 0; // 0 - ïî çàäàííîé öåíå
// 1 - ñêîððåêòèðîâàòü öåíû
// 2 - âõîä ïî òåêóùèì öåíàì
static int LastHour;
static int Magic,
MagicOfName,
MagicOfSymbol;
int Slippage = 0,
Delta,
StopLoss,
TakeProfit,
TrailingStop,
spread;
double Point_,kATR;
string symbol,
ExpertName,
AccNumber;
color clOpenBuy = LightBlue; // Öâåò çíà÷êà îòêðûòèÿ ïîêóïêè
color clOpenSell = LightCoral; // Öâåò çíà÷êà îòêðûòèÿ ïðîäàæè
color clCloseBuy = Blue; // Öâåò çíà÷êà çàêðûòèÿ ïîêóïêè
color clCloseSell = Red; // Öâåò çíà÷êà çàêðûòèÿ ïðîäàæè
color clModifyBuy = Aqua; // Öâåò çíà÷êà ìîäèôèêàöèè ïîêóïêè
color clModifySell = Tomato; // Öâåò çíà÷êà ìîäèôèêàöèè ïðîäàæè
bool MarketWatch = True; // Çàïðîñû ïîä èñïîëíåíèå "Market Watch".
static bool SetFlag = false; // Ôëàã óñòàíîâêè ïîçèöèè
int ticket11; // Òèêåò îðäåðà SELLLIMIT
int ticket21; // Òèêåò îðäåðà BUYLIMIT
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
int init(){
symbol = Symbol();
ExpertName = WindowExpertName();
AccNumber = DoubleToStr(AccountNumber(),0);
MagicOfName = 0;
for(int i=StringLen(ExpertName)-1;i>=0;i--) //Ñîñòàâíîé ìàãèê:
MagicOfName=MagicOfName+StringGetChar(ExpertName,i)*(i+1); //ó÷èòûâàåò èìÿ ýêñïåðòà è
MagicOfSymbol=StringGetChar(symbol,0)*StringGetChar(symbol,5)+ //íàçâàíèå òîðãóåìîé ïàðû
StringGetChar(symbol,1)*StringGetChar(symbol,4)+
StringGetChar(symbol,2)*StringGetChar(symbol,3);
Magic=MagicOfSymbol+MagicOfName;
if (!GlobalVariableCheck(symbol+"_ticket11")) GlobalVariableSet(symbol+"_ticket11",-1);
if (!GlobalVariableCheck(symbol+"_ticket21")) GlobalVariableSet(symbol+"_ticket21",-1);
///*
switch(MagicOfSymbol){
case 17255: Range=71;break;
case 19009: Range=118;break;
case 15731: Range=77;break;
case 16195: Range=66;break;
default: Range=100;
}
//*/
Point_=Point;
if(Check_5Digits == true && (Digits == 3 || Digits == 5)){ //Äëÿ êîððåêòíîé ðàáîòû ñ 5-þ çíàêàìè
Alert("Digits=", Digits, " Broker quotes given in 5-digit mode. \"Point\" will be multiplied by 10"); //â êîòèðîâêàõ
Point_ = 10*Point;
}
}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
int deinit(){
}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
int start(){
if(LastHour!=Hour() && send_mail){ //Åæå÷àñíî ðîáîò øëåò íàì äîêëàä
if(AccountMargin()!=0) string Level=DoubleToStr(100*AccountEquity()/AccountMargin(),0); //î ñîñòîÿíèè ñ÷åòà
else Level = "ÌÍÎÃÎ ";
SendMail(DoubleToStr(AccountNumber(),0)+" "+TimeToStr(TimeCurrent(),TIME_MINUTES),
DoubleToStr(AccountEquity(),0)+", Level "+Level+"%");
LastHour=Hour();
}
bool pass;
int Minute5 = MathMod(Minute(),5); //Íå ñóåòèìñÿ, çà ðûíêîì
if(Minute5!=0)pass=false;
if(Minute5==0 && pass==false){ //ïðèñìàòðèâàåì ðàç â 5 ìèíóò
pass=true;
kATR = iATR(symbol,240,200,1)/(Point_*Range);
//kATR = 1;
spread=MarketInfo(symbol,MODE_SPREAD);
TrailingStop=NormalizeDouble(TrailingStop_*kATR,0);
int orders=0;
int positions=0;
for(int i=OrdersTotal()-1;i>=0;i--){ //Ïîäñ÷åò îðäåðîâ è ïîçèöèé
OrderSelect(i,SELECT_BY_POS);
if(OrderMagicNumber()!=Magic) continue;
if(OrderType()<2)positions++;
orders++;
}
if(UseTrailing && positions>0)Trailing(symbol,-1,Magic); //Òðåéëèíã
int t1=GlobalVariableGet(symbol+"_ticket11");
int t2=GlobalVariableGet(symbol+"_ticket21");
OrderSelect(t1,SELECT_BY_TICKET);
datetime oct1=OrderCloseTime();
OrderSelect(t2,SELECT_BY_TICKET);
datetime oct2=OrderCloseTime();
if(oct1 != 0 || oct2 !=0){
OrderDelete_(-1,Magic,-1,-1); //Åñëè çàêðûëàñü ïîçèöèÿ, óäàëÿåì îðäåð
GlobalVariableSet(symbol+"_ticket11",-1); //Çàïîìèíàåì òèêåòû íà ñëó÷àé
GlobalVariableSet(symbol+"_ticket21",-1); //ïåðåèíèöèàëèçàöèè
}
if(Hour()!=Hour_)SetFlag=false; //Ïîäãîòîâêà ôëàãà óñòàíîâêè îðäåðîâ
switch(orders-positions){
case 0: if(!SendOrders(positions))OrderDelete_(-1,Magic,-1,-1); //Óñòàíîâêà îðäåðîâ
break;
case 1: if(Trend(symbol,TF,slow,fast)==1){
OrderDelete_(OP_SELLLIMIT,Magic,-1,-1);
break;
}
if(Trend(symbol,TF,slow,fast)==-1){
OrderDelete_(OP_BUYLIMIT,Magic,-1,-1);
break;
}
}
}
return(0);
}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
bool SendOrders(int pos=0){ //Ô-öèÿ óñòàíîâêè îðäåðîâ
if (DayOfWeek()==5 && Hour_>=20 || !TradeAllowed || StopTrading ) return(true);
MathSrand(TimeCurrent());
// if (Hour()==Hour_ && Minute()> NormalizeDouble(MathRand()/1000,0) && !SetFlag && pos<=4){
if (Hour()==Hour_ && !SetFlag && pos<=4){
int shift=NormalizeDouble(Trend(symbol,TF,slow,fast)*shift_*kATR,0);
double base=iOpen(symbol,60,0)+shift*Point_; //Áàçîâàÿ öåíà
double StopLoss=StopLoss_*kATR;
double TakeProfit=TakeProfit_*kATR;
double BuyLimitOP=NormalizeDouble(base-Delta_*kATR*Point_,Digits); //Öåíà îòêðûòèÿ áàéëèìèòà
double SellLimitOP=NormalizeDouble(base+Delta_*kATR*Point_,Digits); //Öåíà îòêðûòèÿ ñåëëëèìèòà
double BuyLimitSL=NormalizeDouble(BuyLimitOP-StopLoss*Point_,Digits); //Öåíà ñòîïà áàéëèìèòà
double SellLimitSL=NormalizeDouble(SellLimitOP+StopLoss*Point_,Digits); //Öåíâ ñòîïà ñåëëëèìèòà
double BuyLimitTP=NormalizeDouble(BuyLimitOP+TakeProfit*Point_,Digits); //Öåíà ÒÐ áàéëèìèòà
double SellLimitTP=NormalizeDouble(SellLimitOP-TakeProfit*Point_,Digits); //Öåíà ÒÐ ñåëëèìèòà
datetime DateExp=TimeCurrent()+84400; //Âðåìÿ îòìåíû îðäåðà
int orders=0;
int positions=0;
ticket11 = OrderSend_(symbol, OP_SELLLIMIT, Lot(StopLoss), SellLimitOP, Slippage, SellLimitSL, //Óñòàíîâêà îòëîæåííèêà
SellLimitTP, ExpertName, Magic,DateExp,Red);
ticket21 = OrderSend_(symbol, OP_BUYLIMIT, Lot(StopLoss), BuyLimitOP, Slippage, BuyLimitSL, //Óñòàíîâêà îòëîæåííèêà
BuyLimitTP, ExpertName, Magic,DateExp,Blue);
Sleep(5000);
OrderDelete_(-1,Magic,ticket11,ticket21); //×èñòêà "ìóñîðà"
for(int i=OrdersTotal()-1;i>=0;i--){ //Ïîäñ÷åò îðäåðîâ è ïîçèöèé
OrderSelect(i,SELECT_BY_POS);
if(OrderMagicNumber()!=Magic) continue;
if(OrderType()<2)positions++;
orders++;
}
if(ticket11>0 && ticket21>0){ //Ïðîâåðêà "ïðàâèëüíîñòè"
GlobalVariableSet(symbol+"_ticket11",ticket11);
GlobalVariableSet(symbol+"_ticket21",ticket21);
SetFlag=true;
}
if(orders-positions!=2){ //Åùå îäíà
GlobalVariableSet(symbol+"_ticket11",-1);
GlobalVariableSet(symbol+"_ticket21",-1);
SetFlag=false;
}
}
return(SetFlag);
}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
double Lot(int StopLoss){
if(!MM)return(ContinuousLot);
double Risk=GlobalVariableGet("Risk");
double tick=MarketInfo(symbol,MODE_TICKVALUE); //Ô-öèÿ ðàññ÷èòûâàåò ëîò òàêèì îáðàçîì,
double lot= NormalizeDouble(AccountEquity()*Risk*kLots/(StopLoss*100*tick),2); //÷òî ëîññ ðàâåí óñòàíîâëåííîìó
if(lot<0.01){ //ïðîöåíòó îò äåïîçèòà
TradeAllowed=false;
Alert(symbol,". NO MONEY!");
lot=0;
}
return(lot);
}
//+----------------------------------------------------------------------------+
//| Àâòîð : Êèì Èãîðü Â. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//+----------------------------------------------------------------------------+
//| Ïàðàìåòðû: |
//| op - îïåðàöèÿ (-1 - ëþáîé îðäåð) |
//| mn - MagicNumber (-1 - ëþáîé ìàãèê) |
//| tkt1,tkt2- ïðîïóñòèòü (-1 - óäàëèòü âñå) |
//+----------------------------------------------------------------------------+
bool OrderDelete_(int op=-1, int mn=-1, int tkt1=-1, int tkt2=-1) {
bool res=true;
int err, i, it, k=OrdersTotal(), ot;
for (i=k-1; i>=0; i--){
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
if(OrderTicket()==tkt1 || OrderTicket()==tkt2)continue;
ot=OrderType();
if (ot>1 && ot<6){
if (op<0 || ot==op){
if (mn<0 || OrderMagicNumber()==mn){
for (it=1; it<=5; it++){
if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
while (!IsTradeAllowed()) Sleep(5000);
res=OrderDelete(OrderTicket(), Yellow);
if (res) break;
else {
err=GetLastError();
Print("Error(",err,"), failed delete order",", try ",it);
Sleep(5000);
}
}
}
}
}
}
}
return(res);
}
//+----------------------------------------------------------------------------+
//| Ïàðàìåòðû: |
//| sy - íàèìåíîâàíèå èíñòðóìåíòà (NULL èëè "" - òåêóùèé ñèìâîë) |
//| op - îïåðàöèÿ |
//| ll - ëîò |
//| pp - öåíà |
//| slip-ñëèïïàäæ
//| sl - óðîâåíü ñòîï |
//| tp - óðîâåíü òåéê |
//| co - êîììåíòàðèé
//| mn - Magic Number |
//| ex - Ñðîê èñòå÷åíèÿ |
//| |
//+----------------------------------------------------------------------------+
int OrderSend_(string sy, int op=0, double ll=0, double pp=0,double Slippage=0,
double sl=0, double tp=0, string co="",int mn=0, datetime ex=0, color cl=0) {
cl=IIFc(op==OP_BUYLIMIT || op==OP_BUYSTOP, clOpenBuy, clOpenSell);
datetime ot;
double pa, pb, mp;
int err, it, ticket, msl;
msl=MarketInfo(sy, MODE_STOPLEVEL);
if (ex>0 && ex<TimeCurrent()) ex=0;
for (it=1; it<=5; it++) {
if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) {
Print("SetOrder(): Îñòàíîâêà ðàáîòû ôóíêöèè");
break;
}
while (!IsTradeAllowed()) Sleep(5000);
RefreshRates();
ot=TimeCurrent();
pp=NormalizeDouble(pp,Digits);
sl=NormalizeDouble(sl,Digits);
tp=NormalizeDouble(tp,Digits);
ticket=OrderSend(sy, op, ll, pp, Slippage, sl, tp, co, mn, ex, cl);
if (ticket>0) {
break;
} else {
err=GetLastError();
if (err==128 || err==142 || err==143) {
Sleep(1000*66);
if (OrderExist_(sy, op, mn, ot)) {
break;
}
Print("Error(",err,") set order: ",", try ",it);
continue;
}
mp=MarketInfo(sy, MODE_POINT);
pa=MarketInfo(sy, MODE_ASK);
pb=MarketInfo(sy, MODE_BID);
Print("Error(",err,") set order: ",", try ",it);
Print("Ask=",pa," Bid=",pb," sy=",sy," ll=",ll," op=",
" pp=",pp," sl=",sl," tp=",tp," mn=",mn);
// Íåïðàâèëüíûå ñòîïû
if (err==130) {
// Êîððåêòèðîâêà öåíîâûõ óðîâíåé
if (modeSetOrders==1) {
Sleep(1000*5.3);
switch (op) {
case OP_BUYLIMIT:
if (pp>pa-msl*mp) pp=pa-msl*mp;
if (sl>pp-(msl+1)*mp) sl=pp-(msl+1)*mp;
if (tp>0 && tp<pp+(msl+1)*mp) tp=pp+(msl+1)*mp;
break;
case OP_BUYSTOP:
if (pp<pa+(msl+1)*mp) pp=pa+(msl+1)*mp;
if (sl>pp-(msl+1)*mp) sl=pp-(msl+1)*mp;
if (tp>0 && tp<pp+(msl+1)*mp) tp=pp+(msl+1)*mp;
break;
case OP_SELLLIMIT:
if (pp<pb+msl*mp) pp=pb+msl*mp;
if (sl>0 && sl<pp+(msl+1)*mp) sl=pp+(msl+1)*mp;
if (tp>pp-(msl+1)*mp) tp=pp-(msl+1)*mp;
break;
case OP_SELLSTOP:
if (pp>pb-msl*mp) pp=pb-msl*mp;
if (sl>0 && sl<pp+(msl+1)*mp) sl=pp+(msl+1)*mp;
if (tp>pp-(msl+1)*mp) tp=pp-(msl+1)*mp;
break;
}
Print("SetOrder(): Ñêîððåêòèðîâàíû öåíîâûå óðîâíè");
continue;
}
// Âõîä ïî òåêóùèì öåíàì
if (modeSetOrders==2) {
Print("SetOrder(): Âõîä ïî òåêóùèì öåíàì");
if (op==OP_BUYLIMIT || op==OP_BUYSTOP) OpenPosition(sy, OP_BUY, ll, sl, tp, mn, co);
if (op==OP_SELLLIMIT || op==OP_SELLSTOP) OpenPosition(sy, OP_SELL, ll, sl, tp, mn, co);
break;
}
}
// Áëîêèðîâêà ðàáîòû ñîâåòíèêà
if (err==2 || err==64 || err==65 || err==133) {
TradeAllowed=false; break;
}
// Äëèòåëüíàÿ ïàóçà
if (err==4 || err==131 || err==132) {
Sleep(1000*300); break;
}
// Ñëèøêîì ÷àñòûå çàïðîñû (8) èëè ñëèøêîì ìíîãî çàïðîñîâ (141)
if (err==8 || err==141) Sleep(1000*100);
if (err==139 || err==140 || err==148) break;
// Îæèäàíèå îñâîáîæäåíèÿ ïîäñèñòåìû òîðãîâëè
if (err==146) while (IsTradeContextBusy()) Sleep(1000*11);
// Îáíóëåíèå äàòû èñòå÷åíèÿ
if (err==147) {
ex=0; continue;
}
if (err!=135 && err!=138) Sleep(1000*7.7);
}
}
return(ticket);
}
//+----------------------------------------------------------------------------+
//+----------------------------------------------------------------------------+
//| Ïàðàìåòðû: |
//| sy - íàèìåíîâàíèå èíñòðóìåíòà ("" - ëþáîé ñèìâîë, |
//| NULL - òåêóùèé ñèìâîë) |
//| op - îïåðàöèÿ (-1 - ëþáîé îðäåð) |
//| mn - MagicNumber (-1 - ëþáîé ìàãèê) |
//| ot - âðåìÿ îòêðûòèÿ ( 0 - ëþáîå âðåìÿ óñòàíîâêè) |
//+----------------------------------------------------------------------------+
bool OrderExist_(string sy="", int op=-1, int mn=-1, datetime ot=0) {
int i, k=OrdersTotal(), ty;
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
ty=OrderType();
if (ty>1 && ty<6) {
if ((OrderSymbol()==sy || sy=="") && (op<0 || ty==op)) {
if (mn<0 || OrderMagicNumber()==mn) {
if (ot<=OrderOpenTime()) return(True);
}
}
}
}
}
return(False);
}
//| Îïèñàíèå : Âîçâðàùàåò îäíî èç äâóõ çíà÷åíèé âçàâèñèìîñòè îò óñëîâèÿ. |
//+----------------------------------------------------------------------------+
color IIFc(bool condition, color ifTrue, color ifFalse) {
if (condition) return(ifTrue); else return(ifFalse);
}
//+----------------------------------------------------------------------------+
//| Àâòîð : Êèì Èãîðü Â. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Âåðñèÿ : 10.04.2008 |
//| Îïèñàíèå : Îòêðûâàåò ïîçèöèþ ïî ðûíî÷íîé öåíå. |
//+----------------------------------------------------------------------------+
//| Ïàðàìåòðû: |
//| sy - íàèìåíîâàíèå èíñòðóìåíòà (NULL èëè "" - òåêóùèé ñèìâîë) |
//| op - îïåðàöèÿ |
//| ll - ëîò |
//| sl - óðîâåíü ñòîï |
//| tp - óðîâåíü òåéê |
//| mn - MagicNumber |
//| co - êîììåíòàðèé |
//+----------------------------------------------------------------------------+
void OpenPosition(string sy, int op, double ll, double sl=0, double tp=0, int mn=0, string co="") {
color clOpen;
datetime ot;
double pp, pa, pb;
int dg, err, it, ticket=0;
if (op==OP_BUY) clOpen=clOpenBuy; else clOpen=clOpenSell;
for (it=1; it<=5; it++) {
if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) {
Print("OpenPosition(): Îñòàíîâêà ðàáîòû ôóíêöèè");
break;
}
while (!IsTradeAllowed()) Sleep(5000);
RefreshRates();
dg=MarketInfo(sy, MODE_DIGITS);
pa=MarketInfo(sy, MODE_ASK);
pb=MarketInfo(sy, MODE_BID);
if (op==OP_BUY) pp=pa; else pp=pb;
pp=NormalizeDouble(pp, dg);
ot=TimeCurrent();
if (MarketWatch)
ticket=OrderSend(sy, op, ll, pp, Slippage, 0, 0, co, mn, 0, clOpen);
else
ticket=OrderSend(sy, op, ll, pp, Slippage, sl, tp, co, mn, 0, clOpen);
if (ticket>0) {
break;
} else {
err=GetLastError();
// Âûâîä ñîîáùåíèÿ îá îøèáêå
Print("Error(",err,") opening position: ",", try ",it);
Print("Ask=",pa," Bid=",pb," sy=",sy," ll=",ll," op=",
" pp=",pp," sl=",sl," tp=",tp," mn=",mn);
// Áëîêèðîâêà ðàáîòû ñîâåòíèêà
if (err==2 || err==64 || err==65 || err==133) {
TradeAllowed=false; break;
}
// Äëèòåëüíàÿ ïàóçà
if (err==4 || err==131 || err==132) {
Sleep(1000*300); break;
}
if (err==128 || err==142 || err==143) {
Sleep(1000*66.666);
if (ExistPositions(sy, op, mn, ot)) {
break;
}
}
if (err==140 || err==148 || err==4110 || err==4111) break;
if (err==141) Sleep(1000*100);
if (err==145) Sleep(1000*17);
if (err==146) while (IsTradeContextBusy()) Sleep(1000*11);
if (err!=135) Sleep(1000*7.7);
}
}
if (MarketWatch && ticket>0 && (sl>0 || tp>0)) {
if (OrderSelect(ticket, SELECT_BY_TICKET)) OrderModify_(-1, sl, tp);
}
}
//+----------------------------------------------------------------------------+
//| Âåðñèÿ : 06.03.2008 |
//| Îïèñàíèå : Âîçâðàùàåò ôëàã ñóùåñòâîâàíèÿ ïîçèöèé |
//+----------------------------------------------------------------------------+
//| Ïàðàìåòðû: |
//| sy - íàèìåíîâàíèå èíñòðóìåíòà ("" - ëþáîé ñèìâîë, |
//| NULL - òåêóùèé ñèìâîë) |
//| op - îïåðàöèÿ (-1 - ëþáàÿ ïîçèöèÿ) |
//| mn - MagicNumber (-1 - ëþáîé ìàãèê) |
//| ot - âðåìÿ îòêðûòèÿ ( 0 - ëþáîå âðåìÿ îòêðûòèÿ) |
//+----------------------------------------------------------------------------+
bool ExistPositions(string sy="", int op=-1, int mn=-1, datetime ot=0) {
int i, k=OrdersTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (ot<=OrderOpenTime()) return(True);
}
}
}
}
}
}
return(False);
}
//+----------------------------------------------------------------------------+
//| Âåðñèÿ : 28.11.2006 |
//| Îïèñàíèå : Ìîäèôèêàöèÿ îäíîãî ïðåäâàðèòåëüíî âûáðàííîãî îðäåðà. |
//+----------------------------------------------------------------------------+
//| Ïàðàìåòðû: |
//| pp - öåíà óñòàíîâêè îðäåðà |
//| sl - öåíîâîé óðîâåíü ñòîïà |
//| tp - öåíîâîé óðîâåíü òåéêà |
//| ex - äàòà èñòå÷åíèÿ |
//+----------------------------------------------------------------------------+
bool OrderModify_(double pp=-1, double sl=0, double tp=0, datetime ex=0) {
bool fm=true;
color cl=IIFc(OrderType()==OP_BUY
|| OrderType()==OP_BUYLIMIT
|| OrderType()==OP_BUYSTOP, clModifyBuy, clModifySell);
double op, pa, pb, os, ot;
int dg=MarketInfo(OrderSymbol(), MODE_DIGITS), er, it;
if (pp<=0) pp=OrderOpenPrice();
if (sl<0 ) sl=OrderStopLoss();
if (tp<0 ) tp=OrderTakeProfit();
pp=NormalizeDouble(pp, dg);
sl=NormalizeDouble(sl, dg);
tp=NormalizeDouble(tp, dg);
op=NormalizeDouble(OrderOpenPrice() , dg);
os=NormalizeDouble(OrderStopLoss() , dg);
ot=NormalizeDouble(OrderTakeProfit(), dg);
if (pp!=op || sl!=os || tp!=ot) {
for (it=1; it<=5; it++) {
if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
while (!IsTradeAllowed()) Sleep(5000);
RefreshRates();
fm=OrderModify(OrderTicket(), pp, sl, tp, ex, cl);
if (fm){
return(true);
}
else {
er=GetLastError();
pa=MarketInfo(OrderSymbol(), MODE_ASK);
pb=MarketInfo(OrderSymbol(), MODE_BID);
Print("Error(",er,") modifying order: ",", try ",it);
Print("Ask=",pa," Bid=",pb," sy=",OrderSymbol()," pp=",pp," sl=",sl," tp=",tp);
Sleep(1000*10);
}
}
}
return(fm);
}
//+----------------------------------------------------------------------------+
//| Ñîïðîâîæäåíèå ïîçèöèè ïðîñòûì òðàëîì |
//| Ïàðàìåòðû: |
//| sy - íàèìåíîâàíèå èíñòðóìåíòà ("" - òåêóùèé ñèìâîë) |
//| op - îïåðàöèÿ (-1 - ëþáàÿ ïîçèöèÿ) |
//| mn - MagicNumber (-1 - ëþáîé ìàãèê) |
//+----------------------------------------------------------------------------+
void Trailing(string sy="", int op=-1, int mn=-1) {
double p, pp;
int i, k=OrdersTotal();
if (sy=="") sy=Symbol();
p=MarketInfo(sy, MODE_POINT);
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy && (op<0 || OrderType()==op)) {
if (mn<0 || OrderMagicNumber()==mn) {
if (OrderType()==OP_BUY) {
pp=MarketInfo(sy, MODE_BID);
if (!TrailProfitOnly || (pp-OrderOpenPrice())>TrailingStop*p) {
if (OrderStopLoss()<pp-(TrailingStop+TrailingStep-1)*p) {
ModifyOrder(-1, pp-TrailingStop*p, -1, -1);
}
}
}
if (OrderType()==OP_SELL) {
pp=MarketInfo(sy, MODE_ASK);
if (!TrailProfitOnly || OrderOpenPrice()-pp>TrailingStop*p) {
if (OrderStopLoss()>pp+(TrailingStop+TrailingStep-1)*p || OrderStopLoss()==0) {
ModifyOrder(-1, pp+TrailingStop*p, -1, -1);
}
}
}
}
}
}
}
}
//+----------------------------------------------------------------------------+
//+----------------------------------------------------------------------------+
//| Àâòîð : Êèì Èãîðü Â. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Âåðñèÿ : 28.11.2006 |
//| Îïèñàíèå : Ìîäèôèêàöèÿ îäíîãî ïðåäâàðèòåëüíî âûáðàííîãî îðäåðà. |
//+----------------------------------------------------------------------------+
//| Ïàðàìåòðû: |
//| pp - öåíà óñòàíîâêè îðäåðà |
//| sl - öåíîâîé óðîâåíü ñòîïà |
//| tp - öåíîâîé óðîâåíü òåéêà |
//| ex - äàòà èñòå÷åíèÿ |
//+----------------------------------------------------------------------------+
void ModifyOrder(double pp=-1, double sl=0, double tp=0, datetime ex=0) {
bool fm;
color cl=IIFc(OrderType()==OP_BUY
|| OrderType()==OP_BUYLIMIT
|| OrderType()==OP_BUYSTOP, clModifyBuy, clModifySell);
double op, pa, pb, os, ot;
int dg=MarketInfo(OrderSymbol(), MODE_DIGITS), er, it;
if (pp<=0) pp=OrderOpenPrice();
if (sl<0 ) sl=OrderStopLoss();
if (tp<0 ) tp=OrderTakeProfit();
pp=NormalizeDouble(pp, dg);
sl=NormalizeDouble(sl, dg);
tp=NormalizeDouble(tp, dg);
op=NormalizeDouble(OrderOpenPrice() , dg);
os=NormalizeDouble(OrderStopLoss() , dg);
ot=NormalizeDouble(OrderTakeProfit(), dg);
if (pp!=op || sl!=os || tp!=ot) {
for (it=1; it<=5; it++) {
if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
while (!IsTradeAllowed()) Sleep(5000);
RefreshRates();
fm=OrderModify(OrderTicket(), pp, sl, tp, ex, cl);
if (fm) {
break;
} else {
er=GetLastError();
pa=MarketInfo(OrderSymbol(), MODE_ASK);
pb=MarketInfo(OrderSymbol(), MODE_BID);
Print("Error(",er,") modifying order, try ",it);
Print("Ask=",pa," Bid=",pb," sy=",OrderSymbol(),
" pp=",pp," sl=",sl," tp=",tp);
Sleep(1000*10);
}
}
}
}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
int Trend(string sym = "", int TF=0, int slow = 0, int fast = 0)
{
double ma1=iMA(sym,TF,slow,0,2,4,1);
double ma2=iMA(sym,TF,slow,0,2,4,2);
double ma3=iMA(sym,TF,fast,0,2,4,1);
if (sym=="" || sym=="0") sym=Symbol();
if(ma1>=ma2 && ma1<=ma3)return(1);
if(ma1<=ma2 && ma1>=ma3)return(-1);
return(0);
}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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
---