Price Data Components
Orders Execution
Indicators Used
Miscellaneous
0
Views
0
Downloads
0
Favorites
SV_v4_2_5
//+------------------------------------------------------------------------------+
//| SV vX.X |
//| Copyright © 2009-2010 gorby777 |
//| gorby_e-mail@rambler.ru |
//|Îñîáîå ÑÏÀÑÈÁÎ Êèìó Èãîðþ Â. (aka KimIV, http://www.kimiv.ru) çà åãî ôóíêöèè |
//+------------------------------------------------------------------------------+
#property copyright "Copyright © 2009-2010 gorby777"
#property link "gorby_e-mail@rambler.ru"
extern int LevelHour = 5;
extern int LevelRange = 4;
extern int TradingHour = 8;
extern int TradingMinute = 52;
extern int PipsBack = 22;
extern string n = "---------";
extern int TakeProfit = 280;
extern int StopLoss = 240;
extern int MinProfit = 130;
extern int TrailingStop = 140;
extern double CoeffToLot = 1;
extern string s = "---------";
extern bool UseTrailing = true;
extern bool SendMail_ = false;
extern bool MM = false;
extern bool TradeAllowed = true; // Îñòàíîâêà òîðãîâëè ñîâåòíèêîì
static int TrailingStep = 3;
static int ticket;
int modeSetOrders = 1; // 0 - ïî çàäàííîé öåíå
// 1 - ñêîððåêòèðîâàòü öåíû
// 2 - âõîä ïî òåêóùèì öåíàì
int Slippage = 0;
color clOpenBuy = LightBlue; // Öâåò çíà÷êà îòêðûòèÿ ïîêóïêè
color clOpenSell = LightCoral; // Öâåò çíà÷êà îòêðûòèÿ ïðîäàæè
color clCloseBuy = Blue; // Öâåò çíà÷êà çàêðûòèÿ ïîêóïêè
color clCloseSell = Red; // Öâåò çíà÷êà çàêðûòèÿ ïðîäàæè
color clModifyBuy = Aqua; // Öâåò çíà÷êà ìîäèôèêàöèè ïîêóïêè
color clModifySell = Tomato; // Öâåò çíà÷êà ìîäèôèêàöèè ïðîäàæè
bool MarketWatch = True; // Çàïðîñû ïîä èñïîëíåíèå "Market Watch".
static double Point_;
static int Magic,MagicOfName,MagicOfSymbol;
static string symbol,ExpertName, AccNumber;
static double Price_high = 0;
static double Price_low = 0;
static datetime DateExp = 0;
static bool Start = true;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
int init(){
symbol = Symbol();
ExpertName = WindowExpertName();
Magic=Magic(ExpertName,symbol);
Price_high=GlobalVariableGet(Magic+"_Price_high");
Price_low=GlobalVariableGet(Magic+"_Price_low");
DateExp=GlobalVariableGet(Magic+"_DateExp");
Start=GlobalVariableGet(Magic+"_Start");
Point_=Point;
if((Digits == 3 || Digits == 5)){Point_ = 10*Point;
}
}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
int deinit(){
ObjectsDeleteAll();
if(IsTesting()){
GlobalVariableSet(Magic+"_DateExp",0);
GlobalVariableSet(Magic+"_Price_high",0);
GlobalVariableSet(Magic+"_Price_low",0);
GlobalVariableSet(Magic+"_Start",1);
GlobalVariableSet("Time",0);
GlobalVariableSet("Lot",0.1);
}
}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
int start(){
SetLot();
Mail();
if (UseTrailing && !IsTradeContextBusy()) TrailPositions();
if (!TradeAllowed)return(0);
if(Hour()==TradingHour && Minute() >= TradingMinute && DateExp< TimeCurrent()) {
if(DayOfWeek()==5 && TradingHour >=22){DateExp=TimeCurrent()+24*60*60; return(0);}
int shift=TradingHour-LevelHour;
if(shift<=0) {
if(DayOfWeek()==1) {shift=23+shift;}
else shift=24+shift;
}
int pl=3;
if(Month()==5 || Month()==6|| Month()==7 || Month()==11 || Month()==12)pl=NormalizeDouble(pl*1.7,0);
Price_high=iHigh(symbol,60,iHighest(symbol,60,MODE_HIGH,LevelRange,shift)) + (3+pl)*Point_;
Price_low=iLow(symbol,60,iLowest(symbol,60,MODE_LOW,LevelRange,shift))-pl*Point_;
DateExp=TimeCurrent()+24*60*60;
GlobalVariableSet(Magic+"_Price_high",Price_high);
GlobalVariableSet(Magic+"_Price_low",Price_low);
GlobalVariableSet(Magic+"_Start",0);
GlobalVariableSet(Magic+"_DateExp",DateExp);
}
if(!IsTesting()) Comment("Price_high - ",DoubleToStr(Price_high,Digits),"\n",
"Price_low - ",DoubleToStr(Price_low,Digits),"\n",
"Magic - ",DoubleToStr(Magic,0));
Start=GlobalVariableGet(Magic+"_Start");
if(Start || IsTradeContextBusy())return(0);
double MA14 = iMA(symbol,60,14,0,MODE_SMMA,PRICE_MEDIAN,1);
double MA41 = iMA(symbol,60,41,0,MODE_SMMA,PRICE_MEDIAN,1);
Price_high=GlobalVariableGet(Magic+"_Price_high");
Price_low=GlobalVariableGet(Magic+"_Price_low");
int pb=PipsBack;
if(Month()==5 || Month()==6|| Month()==7 || Month()==11 || Month()==12)pb=NormalizeDouble(PipsBack*1.7,0);
if(Bid >= Price_high+10*Point_){
double k=1;
if(Price_low>MA41){k=0.5;Price_high=Price_high-pb*Point_;}
double SSP=Price_high;
DateExp=GlobalVariableGet(Magic+"_DateExp");
if(Price_high>MA14)
ticket = OrderSend_(symbol, OP_SELLSTOP, GlobalVariableGet("Lot"), SSP, Slippage,
SSP+StopLoss*k*Point_, SSP - TakeProfit*k*Point_, ExpertName, Magic,DateExp);
if(ticket>0){ticket=-1;
Price_high=0;
Price_low=0;
Start=1;
GlobalVariableSet(Magic+"_Price_high",Price_high);
GlobalVariableSet(Magic+"_Price_low",Price_low);
GlobalVariableSet(Magic+"_Start",Start);
return(0);
}
}
if(Ask<=Price_low-10*Point_){
k=1;
if(Price_high<MA41){k=0.5;Price_low=Price_low+pb*Point_;}
DateExp=GlobalVariableGet(Magic+"_DateExp");
double BSP=Price_low;
if(Price_low<MA14)
ticket = OrderSend_(symbol, OP_BUYSTOP, GlobalVariableGet("Lot"), BSP, Slippage,
BSP-StopLoss*k*Point_, BSP + TakeProfit*k*Point_, ExpertName, Magic,DateExp);
if(ticket>0){ticket=-1;
Price_high=0;
Price_low=0;
Start=1;
GlobalVariableSet(Magic+"_Price_high",Price_high);
GlobalVariableSet(Magic+"_Price_low",Price_low);
GlobalVariableSet(Magic+"_Start",Start);
return(0);
}
}
}
//+----------------------------------------------------------------------------+
//| Îïèñàíèå : Îòïðàâëÿåò îðäåð |
//+----------------------------------------------------------------------------+
//| Ïàðàìåòðû: |
//| sy - íàèìåíîâàíèå èíñòðóìåíòà (NULL èëè "" - òåêóùèé ñèìâîë) |
//| op - îïåðàöèÿ |
//| ll - ëîò |
//| pp - öåíà |
//| slip-ñëèïïàäæ |
//| sl - óðîâåíü ñòîï |
//| tp - óðîâåíü òåéê |
//| co - êîììåíòàðèé |
//| mn - Magic Number |
//| ex - Ñðîê èñòå÷åíèÿ |
//+----------------------------------------------------------------------------+
int OrderSend_(string sy, int op, double ll, double pp,double Slippage,
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;
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=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=",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);
}
//+----------------------------------------------------------------------------+
//| Âåðñèÿ : 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);
sl=NormalizeDouble(sl, dg);
tp=NormalizeDouble(tp, 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);
}
//ÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆ
void TrailPositions() //ïîðîãîâûé òðåéëèíã ñòîï
{
double MA14 = iMA(symbol,60,14,0,MODE_SMMA,PRICE_MEDIAN,1);
double MA41 = iMA(symbol,60,41,0,MODE_SMMA,PRICE_MEDIAN,1);
int Orders = OrdersTotal();
for (int i=Orders-1;i>=0;i--) {
if (!(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))) continue;
if (OrderMagicNumber()!=Magic) continue;
int mp=MinProfit;
int ts =TrailingStop;
int tp =TakeProfit;
if (OrderType() == OP_BUY) {
if (MA14<MA41){mp=MinProfit*0.7;ts=TrailingStop*0.7;tp=TakeProfit*0.7;}
if((Bid-OrderOpenPrice())/(OrderTakeProfit()-OrderOpenPrice()) >0.7){ts=TrailingStop*0.5;}
if (Bid-OrderOpenPrice() > mp*Point_) {
if (OrderStopLoss() <= Bid-(ts+TrailingStep)*Point_) {
OrderModify_(OrderOpenPrice(), Bid-ts*Point_, OrderTakeProfit(), 0);
}
if (OrderTakeProfit()<=MA14+(tp-mp-TrailingStep)*Point_) {
OrderModify_(OrderOpenPrice(), OrderStopLoss(), MA14+(tp-mp)*Point_, 0);
}
}
}
if (OrderType() == OP_SELL) {
if (MA14>MA41){mp=MinProfit*0.7;ts=TrailingStop*0.7;tp=TakeProfit*0.7;}
if((OrderOpenPrice()-Ask)/(OrderOpenPrice()-OrderTakeProfit()) > 0.7){ts=TrailingStop*0.5;}
if (OrderOpenPrice()-Ask > mp*Point_) {
if (OrderStopLoss() >= Ask+(ts+TrailingStep)*Point_) {
OrderModify_(OrderOpenPrice(), Ask+ts*Point_, OrderTakeProfit(), 0);
}
if (OrderTakeProfit()>=MA14-(tp-mp-TrailingStep)*Point_) {
OrderModify_(OrderOpenPrice(), OrderStopLoss(), MA14-(tp-mp)*Point_, 0);
}
}
}
}
}
//ÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆ
int Magic(string ExpertName, string symbol){
for(int i=StringLen(ExpertName)-1;i>=0;i--){
int MagicOfName=MagicOfName+StringGetChar(ExpertName,i)*(i+1);
}
int MagicOfSymbol=StringGetChar(symbol,0)*StringGetChar(symbol,5)+
StringGetChar(symbol,1)*StringGetChar(symbol,4)+
StringGetChar(symbol,2)*StringGetChar(symbol,3);
int Magic=MagicOfSymbol+MagicOfName;
return(Magic);
}
//ÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆ
void SetLot(){
if(!MM) return(0);
if(Hour()!=10 || GlobalVariableGet("Time") + 23*60*60 > TimeCurrent()) return(0);
double LotNew = NormalizeDouble(AccountEquity()/100000*CoeffToLot,2);
if (LotNew > GlobalVariableGet("Lot"))GlobalVariableSet("Lot",LotNew);
GlobalVariableSet("Time",TimeCurrent());
}
//ÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆ
void Mail(){
static int LastHour;
if(SendMail_ && LastHour!=Hour()){
int buys=0;
int sells=0;
int ords=0;
for(int i=OrdersTotal()-1;i>=0;i--){
OrderSelect(i,SELECT_BY_POS);
if(OrderType()==0)buys++;
if(OrderType()==1)sells++;
if(OrderType()>1)ords++;
}
string Level = "ÌÍÎÃÎ ";
if(AccountMargin()!=0)Level=DoubleToStr(100*AccountEquity()/AccountMargin(),0);
SendMail(TimeToStr(TimeCurrent(),TIME_MINUTES)+", "+DoubleToStr(AccountNumber(),0)+" =",
"= "+DoubleToStr(AccountEquity(),0)+", "+Level+"%, b-"+buys+", s-"+sells+", o-"+ords);
LastHour=Hour();
}
}
//ÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆ
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
---