В следующий раз, используйте вставку через . Повышается читаемость кода.
Scriptor:
В следующий раз, используйте вставку через . Повышается читаемость кода.
В следующий раз, используйте вставку через . Повышается читаемость кода.
Ок.
Вроде сам пока усовершенствовал своими кривыми ручками, поставлю на демо и посмотрю че да как
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Нужна помощь, есть торовая система, хочется чтобы она совершала сделки на основе индикатора 'CatFX50'
помогите плз
вот код системы...
#import "WebGet.dll"
string forextsd_com_webget(string Url);
#import
extern bool MM = true; // Money management
extern int Risk = 100; // Percent(%). minimum '1' maximum '100'
extern double ManLot = 0.1; // Malual lot size (if 'MM=False')
extern string AutoSetting = "To use AutoSetting (EURGBP EURCHF), put \'UseAutoSetting=true\'";
extern bool UseAutoSetting = false; // if 'false', 'PersoMagic' 'PersoOpenHour' and 'PersoCloseHour' will be used.
//------PersoSetting------
extern string PersoSetting = "To use PersoSetting put \'UseAutoSetting=false\'";
extern int PersoShift = 2;
extern int PersoMagic = 2254007;
extern int PersoOpenHour = 1;
extern int PersoCloseHour = 23;
extern int PersoLimit = 17;
extern int PersoTP = 3;
//-------WeekEndStop------
int WED1 = 5; // Day of begin
int WEH1 = 22; // Hour of begin
int WED2 = 1; // Day of end
int WEH2 = 2; // hour of end
//----------------------------------------------------------------------------
bool first=true,fTime; int TradingTime,WE,OpenHour,CloseHour,Shift,Limit,TP,TimeZone, Slippage=3,LotsDigit=1,Magic=0; double a,b,TV,SP;
int init()
{
if (UseAutoSetting==true)
{
if (Symbol()=="EURGBPm" || Symbol()=="EURGBP") { Magic=1001; OpenHour=21; CloseHour=9; Shift=3; Limit=15; TP=3; }
if (Symbol()=="EURCHFm" || Symbol()=="EURCHF") { Magic=1010; OpenHour=21; CloseHour=9; Shift=4; Limit=15; TP=3; }
if (Magic==0) { Magic=1000; OpenHour=21; CloseHour=9; Shift=2; Limit=17; TP=3; }
}
else { Magic=PersoMagic; OpenHour=PersoOpenHour; CloseHour=PersoCloseHour; Shift=PersoShift; Limit=PersoLimit; TP=PersoTP; }
fTime = true;
return(0);
}
///////////////////////////////////////////////////////////
int start()
{
if (IsTesting()) TimeZone = 0; else { datetime cTime = iTime(NULL,PERIOD_W1,0); string gmt = forextsd_com_webget("calendar.forex-tsd.com"); if(gmt!="") datetime gmtime = StrToTime(gmt); else return(0); int tz = NormalizeDouble((TimeCurrent() - gmtime)/3600.0,0); if ( tz < 24) TimeZone = tz; } int OHTZ=OpenHour+TimeZone, ohtz; int CHTZ=CloseHour+TimeZone,chtz; if (OHTZ>=24) ohtz=OHTZ-24;
if (OHTZ<24 && OHTZ>=0) ohtz=OHTZ; if (OHTZ<0) ohtz=OHTZ+24; if (CHTZ>=24) chtz=CHTZ-24; if (CHTZ<24 && CHTZ>=0) chtz=CHTZ; if (CHTZ<0) chtz=CHTZ+24;
if (WEstop()==0)
{
if ((ohtz>chtz && (TimeHour(TimeCurrent()) >= ohtz || TimeHour(TimeCurrent())< chtz)) || (ohtz<chtz && (TimeHour(TimeCurrent()) >= ohtz && TimeHour(TimeCurrent())< chtz)))
{
if (first) { a=Ask; b=Bid; first=false; return(0); }
if (Ask-a>=Shift*Point) { OrderSend(Symbol(),OP_SELL,GetLots(),Bid,Slippage,0,0,"Lucky"+Symbol(),Magic,0,Red); }
if (b-Bid>=Shift*Point) { OrderSend(Symbol(),OP_BUY,GetLots(),Ask,Slippage,0,0,"Lucky"+Symbol(),Magic,0,Blue); }
}
}
a=Ask; b=Bid;
CloseAll();
return(0);
}
///////////////////////////////////////////////////////////
int WEstop() // need GTMdetect too
{
WE=0;
if (TimeHour(TimeCurrent()) > WEH1 && DayOfWeek() == WED1) WE=1;
if (TimeHour(TimeCurrent()) < WEH2 && DayOfWeek() == WED2) WE=2;
return(WE);
}
//--------------------------------------------------------------------------
void CloseAll()
{
for (int cnt = OrdersTotal()-1 ; cnt >= 0; cnt--)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderSymbol() == Symbol() && OrderMagicNumber()==Magic)
{
int OHTZ=OpenHour+TimeZone, ohtz;
int CHTZ=CloseHour+TimeZone, chtz;
if (OHTZ>=24) ohtz=OHTZ-24;
if (OHTZ<24 && OHTZ>=0) ohtz=OHTZ;
if (OHTZ<0) ohtz=OHTZ+24;
if (CHTZ>=24) chtz=CHTZ-24;
if (CHTZ<24 && CHTZ>=0) chtz=CHTZ;
if (CHTZ<0) chtz=CHTZ+24;
if (SecurProfit()==1 || ((ohtz>chtz && (TimeHour(TimeCurrent()) < ohtz && TimeHour(TimeCurrent())>= chtz)) || (ohtz<chtz && (TimeHour(TimeCurrent()) < ohtz || TimeHour(TimeCurrent())>= chtz)))) {
if(OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Blue);
if(OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Red);
}
else
{
if((OrderType()==OP_BUY) && (((OrderOpenPrice()-Ask)/Point) > Limit)) OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Blue);
if((OrderType()==OP_SELL) && (((Bid-OrderOpenPrice())/Point) > Limit)) OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Red);
}
}
}
}
//--------------------------------------------------------------------------
double GetLots()
{
double lots,MD,RM,FMM,MinLot,MaxLot;
int lotsdigit;
MD = NormalizeDouble(MarketInfo(Symbol(), MODE_LOTSTEP),2);
RM = NormalizeDouble(MarketInfo(Symbol(), MODE_MARGINREQUIRED),4);
FMM = (RM)*100;
if (MD==0.01) lotsdigit=2; else lotsdigit=1; LotsDigit=lotsdigit;
if (MM==true) lots = NormalizeDouble(AccountFreeMargin()/(FMM/Risk)-0.05,LotsDigit); else lots=ManLot;
MinLot=NormalizeDouble(MarketInfo(Symbol(),MODE_MINLOT),2);
MaxLot=NormalizeDouble(MarketInfo(Symbol(), MODE_MAXLOT),2);
if (LotsDigit == 2) MinLot = 0.01;
if (lots < MinLot) lots = MinLot;
if (lots > MaxLot) lots = MaxLot; return (lots);
}
//--------------------------------------------------------------------------
double TickValue()
{
double tv;
tv = NormalizeDouble(MarketInfo(Symbol(), MODE_TICKVALUE),4);
return(tv);
}
//--------------------------------------------------------------------------
int SecurProfit()
{
int sp=0;
if (OrderProfit()>(TickValue()*GetLots()*TP)) sp=1; return(sp);
}