help me! есть идея не знаю как ее реализовать

[Удален]  
Доброво всем времяни суток!

Нужна помощь, есть торовая система, хочется чтобы она совершала сделки на основе индикатора '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);
}
 
В следующий раз, используйте вставку через . Повышается читаемость кода.
[Удален]  
Scriptor:
В следующий раз, используйте вставку через . Повышается читаемость кода.

Ок.


Вроде сам пока усовершенствовал своими кривыми ручками, поставлю на демо и посмотрю че да как