Показано с 1 по 3 из 3.

Тема: Ограничение срока действия программы.Нужна помощь.

  1. #1
    Аватар для cacos
    Регистрация
    14.10.2011
    Сообщений
    1
    Вес репутации
    0

    Smile Ограничение срока действия программы.Нужна помощь.

    Всем привет помогите разобраться с DLL .Как вставить код защиты советника для пользователя , чтобы он её протестировал
    На Урок 35 - Защита MQL4-программ .
    На уроке есть эта тема,в роде все понятно но я тормознулся
    Вот этот код
    int start()
    {
    string expire_date = "2006.31.06"; //вшитая дата экспирации
    datetime e_d = StrToTime(expire_date);
    if (CurTime() >= e_d)
    {
    Alert ("The trial version has expired!");
    return(0);
    }
    //тут вставьте код Вашей программы!
    return(0);
    }

    Для примера вставить в этот код .

    //+------------------------------------------------------------------+
    //| My_First_EA.mq4 |
    //| Kirill |
    //| StockProgrammer@mail.ru |
    //+------------------------------------------------------------------+
    #property copyright "Kirill"
    #property link "StockProgrammer@mail.ru"
    //---- input parameters
    extern double TakeProfit=350.0;
    extern double Lots=0.1;
    extern double TrailingStop=35.0;

    //+------------------------------------------------------------------+
    //| expert initialization function |
    //+------------------------------------------------------------------+
    int init()
    {
    //----

    //----
    return(0);
    }
    //+------------------------------------------------------------------+
    //| expert deinitialization function |
    //+------------------------------------------------------------------+
    int deinit()
    {
    //----

    //----
    return(0);
    }

    int Crossed (double line1 , double line2)
    {
    static int last_direction = 0;
    static int current_dirction = 0;

    if(line1>line2)current_dirction = 1; //up
    if(line1<line2)current_dirction = 2; //down

    if(current_dirction != last_direction) //changed
    {
    last_direction = current_dirction;
    return (last_direction);
    }

    else
    {
    return (0);
    }

    }

    //+------------------------------------------------------------------+
    //| expert start function |
    //+------------------------------------------------------------------+

    int start()
    {

    //----
    int cnt, ticket, total;
    double shortEma, longEma;

    if(Bars<100)
    {
    Print("bars less than 100");
    return(0);
    }

    if(TakeProfit<10)
    {
    Print("TakeProfit less than 10");
    return(0); // check TakeProfit
    }

    shortEma = iMA(Symbol(), Period(),9, 0, MODE_SMA, PRICE_CLOSE, 0);
    longEma = iMA(Symbol(), Period(), 5, 0, MODE_SMA, PRICE_CLOSE, 1);

    int isCrossed = Crossed (shortEma,longEma);

    total = OrdersTotal();
    if(total < 1)
    {
    if(isCrossed == 1)
    {
    ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+ TakeProfit*Point, "My EA",12345,0,Green);
    if(ticket>0)
    {
    if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES ))
    Print("BUY order opened : ",OrderOpenPrice());
    }
    else Print("Error opening BUY order : ",GetLastError());
    return(0);
    }

    if(isCrossed == 2)
    {
    ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,
    Bid-TakeProfit*Point,"My EA",12345,0,Red);
    if(ticket>0)
    {
    if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES ))
    Print("SELL order opened : ",OrderOpenPrice());
    }
    else Print("Error opening SELL order : ",GetLastError());
    return(0);

    }

    return(0);
    }

    for(cnt=0;cnt<total;cnt++)
    {
    OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
    if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
    {
    if(OrderType()==OP_BUY) // long position is opened
    {
    // should it be closed?
    if(isCrossed == 2)
    {
    OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet) ; // close position
    return(0); // exit
    }

    // check for trailing stop
    if(TrailingStop>0)
    {
    if(Bid-OrderOpenPrice()>Point*TrailingStop)
    {
    if(OrderStopLoss()<Bid-Point*TrailingStop)
    {
    OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
    return(0);
    }
    }
    }
    }

    else // go to short position
    {
    // should it be closed?
    if(isCrossed ==1)
    {
    OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet) ; // close position
    return(0); // exit
    }

    // check for trailing stop
    if(TrailingStop>0)
    {
    if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
    {
    if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
    {
    OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Poi nt*TrailingStop,OrderTakeProfit(),0,Red);
    return(0);
    }
    }
    }
    }
    }
    }

    return(0);
    }

    //+------------------------------------------------------------------+

    Последний раз редактировалось cacos; 20.10.2011 в 20:46. Причина: Редактирование

  2. #2
    Художник-Скептик™ Аватар для bor-ix
    Регистрация
    13.12.2009
    Адрес
    speculant.com
    Сообщений
    1187
    Вес репутации
    1766
    Уважаемый cacos
    я конечно не спец в коддинге но - настоятельно рекомендую привести выше указанный код в читабельный вид!
    иначе это будет расценено как спам и будет удалено!

    уважайте своих товарищей по общим интересам!

  3. #3
    Аватар для Ximuni
    Регистрация
    26.09.2016
    Сообщений
    5
    Вес репутации
    7
    Согласен полностью

Ваши права в разделе

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •