Logo

Вход

Войти с помощью соц. сетей
Эта тема закрыта.
X
X
 
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения
  • #1 Свернуть

    [Архив] Помогите исправить советник или индикатор

    Продолжение темы -> Помогите исправить советник или индикатор

    --------------------------------------------------

    Есть неплохих два советника, сам переделал их чтоб торговали на депозите в 100$, но чёто не торгуют. Помогите кто может. Архив с ними тут.
    Последний раз редактировалось Gold; 21.10.2014, 21:40.
  • <a href="https://www.instaforex.org/ru/?x=ruforum">InstaForex</a>
  • #2 Свернуть

    Сообщение от anvin Посмотреть сообщение
    Есть неплохих два советника, сам переделал их чтоб торговали на депозите в 100$, но чёто не торгуют. Помогите кто может. Архив с ними тут.
    Тут есть ветка для бесплатного программирования. Ты туда их выложи, там помогут, может даже я. А ветки чего плодить. Я вот случайно заглянул в эту тему.

    Комментарий

    • #3 Свернуть

      Сообщение от anvin Посмотреть сообщение
      Есть неплохих два советника, сам переделал их чтоб торговали на депозите в 100$, но чёто не торгуют. Помогите кто может. Архив с ними тут.
      неплохо бы какое то описание советников

      Комментарий

      • #4 Свернуть

        По советнику (Master Tr3)
        Ну во-первых решение тут:
        Ордера открываются если выполнено следующее условие:

        MQL код:
        if (txnLot>=0.1 && AccountFreeMargin()>1500) 

        double AccountFreeMargin( ) //Возвращает значение свободных средств, разрешенных для открытия позиций на текущем счете.

        txnLot = MathRound(AccountFreeMargin()*(maxOrderCount-orderCount)/(amountCoeff*100*(maxOrderCount+1-orderCount)))/10.0;
        //maxOrderCount - задается в параметрах советника
        //orderCount - количество уже открытых ордеров
        //amountCoeff - коэффициент последней цены закрытия


        Все переменные знаете... справьте что Вам нужно и перекомпилируйте


        во-вторых если нет достаточно денег... может открыть центовый счет




        И самый главный вопрос - что переделавали?
         
        Последний раз редактировалось Gold; 11.04.2013, 00:23.
        пишу советники (скрипты,индикаторы) за еду...тут

        Комментарий

        • #5 Свернуть

          А у меня советник на тестере стратегий открывается отлично, а сейчас на график прикрутил - даже не пошевельнулся, хотя сигнал был, да и вчера, что то пропустил сигнал, до этого работал нормально, проскальзывание 4п стоит. В журнале посмотрел, во время сигнала запись Old Tick. Кто-нибудь знает, где причину не открытия найти можно?
           

          Комментарий

          • #6 Свернуть

            Сообщение от eugggy Посмотреть сообщение
            А у меня советник на тестере стратегий открывается отлично, а сейчас на график прикрутил - даже не пошевельнулся, хотя сигнал был, да и вчера, что то пропустил сигнал, до этого работал нормально, проскальзывание 4п стоит. В журнале посмотрел, во время сигнала запись Old Tick. Кто-нибудь знает, где причину не открытия найти можно?
            а каком именно советнике идет речь?
               
            пишу советники (скрипты,индикаторы) за еду...тут

            Комментарий

            • #7 Свернуть

              Для любого советника ОЛДТИК - это "как серпом по ....", необходимо чтобы после ОЛДТИКОВ (потери котировок на графике или работы художников от ДЦ) он переинициализировался, а котировки соответственно надо восстановить.

              Комментарий

              • #8 Свернуть

                Сообщение от vasili Посмотреть сообщение
                а каком именно советнике идет речь?
                Собственного написания.
                   

                Комментарий

                • #9 Свернуть

                  Сообщение от beck-fx Посмотреть сообщение
                  Для любого советника ОЛДТИК - это "как серпом по ....", необходимо чтобы после ОЛДТИКОВ (потери котировок на графике или работы художников от ДЦ) он переинициализировался, а котировки соответственно надо восстановить.
                  Мне казалось, что потери котировок должны быть заметны, а на графике всё нормально. Или это потери на тиках? Переинициализировался это как? А с восстановлением дела ещё хуже, у меня в терминале (архив котировок) отсутствует пара по которой я торгую.
                     

                  Комментарий

                  • #10 Свернуть

                    Советник не работает. В чем причина?

                    Советник на основе пересечения мувингов. Можно настраивать любые периоды МА, таймфрейма и т.д.. Но почему-то не хочет открывать ордера после выставления первого ордера. Подскажите, пожалуйста, в чем может быть причина. Вот исходник:

                    MQL код:

                    #property copyright "http://dmffx.com"
                    #property link "http://dmffx.com"

                    extern int TimeFrame = 0; // Рабочий таймфрейм. 0 - таймфрейм графика или выбранный в тестере, или значение таймфрейма: 1,5,15,30,60,240
                    extern string e0 = "=== Order ===";
                    extern double Lots = 0.1; // Количество лотов
                    extern int Slippage = 3; // Допустимое проскальзывание
                    extern int StopLoss = 50; // Стоплосс
                    extern int TakeProfit = 50; // Тейкпрофит
                    extern int Magic_N = 123; // Магик. если несколько экспертов работает на одном символе у них должен быть разный магик.
                    extern string e1 = "=== Orders Management ===";
                    extern int MaxCount = -1; // Ммаксимально допустимое количество открытых ордеров
                    extern int MaxBuyCount = -1; // Максимально допустимое количество открытых ордеров бай, -1 - не ограничено
                    extern int MaxSellCount = -1; // Максимально допустимое количество открытых ордеров селл, -1 - не ограничено
                    extern bool CloseOnRev = false; // Закрывать ордера перед открытием противоположного ордера
                    extern string e4 = "=== Indicators ===";
                    extern int FastMAPeriod = 13; // Период быстрой МА
                    extern int FastMAMethod = 0; // Метод быстрой МА: 0-SMA, 1-EMA, 2-SMMA, 3-LWMA
                    extern int FastMAPrice = 0; // Цена быстрой МА: 0-Close, 1-Open, 2-High, 3-Low, 4-Median, 5-Typical, 6-Weighted
                    extern int FastMAShift = 0; // Сдвиг быстрой МА
                    extern int SlowMAPeriod = 21; // Период медленной МА
                    extern int SlowMAMethod = 0; // Метод медленной МА: 0-SMA, 1-EMA, 2-SMMA, 3-LWMA
                    extern int SlowMAPrice = 0; // Цена Медленной МА: 0-Close, 1-Open, 2-High, 3-Low, 4-Median, 5-Typical, 6-Weighted
                    extern int SlowMAShift = 0; // Сдвиг медленой МА
                    extern bool SlowK_Use = true; // SlowMAPeriod пропорционально FastMAPeriod
                    extern double SlowK = 1.62; // Коэффициент пропорциональности SlowMAPeriod и FastMAPeriod (для устранения бесполезных сочетаний параметров при оптимизации)


                    int LastBuyTime,LastSellTime;
                    double bv,sv;
                    int LastTime;
                    int drb;
                    //+------------------------------------------------------------------+
                    //| expert initialization function |
                    //+------------------------------------------------------------------+
                    int init(){

                    if(SlowK_Use){
                    SlowMAPeriod=MathRound(SlowK*FastMAPeriod);
                    Print("SlowMAPeriod="+SlowMAPeriod);
                    }

                    LastTime=0;

                    drb=1+MathMax(fMADrawBegin(FastMAPeriod,FastMAMeth od)+FastMAShift,fMADrawBegin(SlowMAPeriod,SlowMAMe thod)+SlowMAShift);

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

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

                    if(iBars(NULL,TimeFrame)<drb){
                    return(0);
                    }


                    if(LastTime==0){
                    LastTime=iTime(NULL,TimeFrame,0);
                    return(0);
                    }



                    static bool ft=false;
                    bool trouble=false;

                    if(!ft){
                    for(int i=0;i<OrdersTotal();i++){
                    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
                    if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic_N){
                    if(OrderType()==OP_BUY)LastBuyTime=MathMax(LastBuy Time,OrderOpenTime());
                    if(OrderType()==OP_SELL)LastSellTime=MathMax(LastS ellTime,OrderOpenTime());
                    }
                    }
                    else{
                    return(0);
                    }
                    }

                    for(i=0;i<HistoryTotal();i++){
                    if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)){
                    if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic_N){
                    if(OrderType()==OP_BUY)LastBuyTime=MathMax(LastBuy Time,OrderOpenTime());
                    if(OrderType()==OP_SELL)LastSellTime=MathMax(LastS ellTime,OrderOpenTime());
                    }
                    }
                    else{
                    return(0);
                    }
                    }

                    if(LastBuyTime>LastSellTime)LastSellTime=0;
                    if(LastSellTime>LastBuyTime)LastBuyTime=0;

                    if(TimeFrame==0)TimeFrame=Period();

                    LastBuyTime=TimeFrame*60*MathFloor(LastBuyTime/(TimeFrame*60));
                    LastSellTime=TimeFrame*60*MathFloor(LastSellTime/(TimeFrame*60));

                    ft=true;
                    }


                    if(LastTime!=iTime(NULL,TimeFrame,0)){

                    double fast_ma0=iMA(NULL,TimeFrame,FastMAPeriod,FastMAShi ft,FastMAMethod,FastMAPrice,1);
                    double slow_ma0=iMA(NULL,TimeFrame,SlowMAPeriod,SlowMAShi ft,SlowMAMethod,SlowMAPrice,1);
                    double fast_ma1=iMA(NULL,TimeFrame,FastMAPeriod,FastMAShi ft,FastMAMethod,FastMAPrice,2);
                    double slow_ma1=iMA(NULL,TimeFrame,SlowMAPeriod,SlowMAShi ft,SlowMAMethod,SlowMAPrice,2);

                    bool BuySignal=false;
                    bool SellSignal=false;

                    if(fast_ma0>slow_ma0){
                    if(fast_ma1<=slow_ma1){
                    BuySignal=true;
                    }
                    }
                    if(fast_ma0<slow_ma0){
                    if(fast_ma1>=slow_ma1){
                    SellSignal=true;
                    }
                    }

                    if(BuySignal || SellSignal){
                    if(CloseOnRev){
                    if(fOrderCloseMarket(SellSignal,BuySignal)!=0){
                    trouble=true;
                    }
                    }
                    int BuyCount,SellCount;
                    int Total=fMarketOrdersTotal(BuyCount,SellCount);
                    if(Total!=-1){
                    if(Total<MaxCount || MaxCount==-1){
                    if(BuySignal){
                    if(BuyCount<MaxBuyCount || MaxBuyCount==-1){
                    if(LastBuyTime!=iTime(NULL,TimeFrame,0)){
                    if(fOrderOpenBuy()<1){
                    trouble=true;
                    }
                    }
                    }
                    }
                    if(SellSignal){
                    if(SellCount<MaxSellCount || MaxSellCount==-1){
                    if(LastSellTime!=iTime(NULL,TimeFrame,0)){
                    if(fOrderOpenSell()<1){
                    trouble=true;
                    }
                    }
                    }
                    }
                    }
                    }
                    else{
                    trouble=true;
                    }

                    }

                    }


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

                    int fOrderCloseMarket(bool aCloseBuy=true,bool aCloseSell=true){
                    int tErr=0;
                    for(int i=OrdersTotal()-1;i>=0;i--){
                    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
                    if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic_N){
                    if(OrderType()==OP_BUY && aCloseBuy){
                    RefreshRates();
                    if(!IsTradeContextBusy()){
                    if(!OrderClose(OrderTicket(),OrderLots(),ND(Bid),S lippage,CLR_NONE)){
                    int tCheck=GetLastError();
                    Print("Error close BUY "+OrderTicket()+" "+fMyErDesc(tCheck));
                    tErr=-1;
                    }
                    }
                    else{
                    static int lt1=0;
                    if(lt1!=iTime(NULL,TimeFrame,0)){
                    lt1=iTime(NULL,TimeFrame,0);
                    Print("Need close BUY "+OrderTicket()+". Trade Context Busy");
                    }
                    return(-2);
                    }
                    }
                    if(OrderType()==OP_SELL && aCloseSell){
                    RefreshRates();
                    if(!IsTradeContextBusy()){
                    if(!OrderClose(OrderTicket(),OrderLots(),ND(Ask),S lippage,CLR_NONE)){
                    tCheck=GetLastError();
                    Print("Error close SELL "+OrderTicket()+" "+fMyErDesc(tCheck));
                    tErr=-1;
                    }
                    }
                    else{
                    static int lt2=0;
                    if(lt2!=iTime(NULL,TimeFrame,0)){
                    lt2=iTime(NULL,TimeFrame,0);
                    Print("Need close SELL "+OrderTicket()+". Trade Context Busy");
                    }
                    return(-2);
                    }
                    }
                    }
                    }
                    }
                    return(tErr);
                    }



                    double fGetLotsSimple(int aTradeType){

                    if(AccountFreeMarginCheck(Symbol(),aTradeType,Lots )<=0){
                    return(-1);
                    }
                    if(GetLastError()==134){
                    return(-2);
                    }
                    return(Lots);
                    }


                    double ND(double v){return(NormalizeDouble(v,Digits));}

                    int fMarketOrdersTotal(int & aBuyCount,int & aSellCount){
                    for(int i=0;i<OrdersTotal();i++){
                    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
                    if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic_N){
                    switch (OrderType()){
                    case OP_BUY:
                    aBuyCount++;
                    break;
                    case OP_SELL:
                    aSellCount++;
                    break;
                    }
                    }
                    }
                    else{
                    return(-1);
                    }
                    }
                    return(aBuyCount+aSellCount);
                    }


                    int fOrderOpenBuy(){

                    // fOrderOpenBuy();

                    RefreshRates();
                    double lts=fGetLotsSimple(OP_BUY);
                    if(lts>0){
                    if(!IsTradeContextBusy()){
                    double slts=ND(Ask-Point*StopLoss);
                    if(StopLoss==0)slts=0;
                    double tpts=ND(Ask+Point*TakeProfit);
                    if(TakeProfit==0)tpts=0;
                    int irv=OrderSend(Symbol(),OP_BUY,lts,ND(Ask),Slippage ,slts,tpts,NULL,Magic_N,0,CLR_NONE);
                    if(irv>0){
                    LastBuyTime=iTime(NULL,TimeFrame,0);
                    LastSellTime=0;
                    return(irv);
                    }
                    else{
                    int tCheck=GetLastError();
                    Print ("Error open BUY. "+fMyErDesc(tCheck));
                    return(-1);
                    }
                    }
                    else{
                    static int lt2=0;
                    if(lt2!=iTime(NULL,TimeFrame,0)){
                    lt2=iTime(NULL,TimeFrame,0);
                    Print("Need open buy. Trade Context Busy");
                    }
                    return(-2);
                    }
                    }
                    else{
                    static int lt3=0;
                    if(lt3!=iTime(NULL,TimeFrame,0)){
                    lt3=iTime(NULL,TimeFrame,0);
                    if(lts==-1)Print("Need open buy. No money");
                    if(lts==-2)Print("Need open buy. Wrong lots size");
                    }
                    return(-3);
                    }
                    }


                    int fOrderOpenSell(){

                    // fOrderOpenSell();

                    RefreshRates();
                    double lts=fGetLotsSimple(OP_SELL);
                    if(lts>0){
                    if(!IsTradeContextBusy()){
                    double slts;
                    slts=ND(Bid+Point*StopLoss);
                    if(StopLoss==0)slts=0;
                    double tpts=ND(Bid-Point*TakeProfit);
                    if(TakeProfit==0)tpts=0;
                    int irv=OrderSend(Symbol(),OP_SELL,lts,ND(Bid),Slippag e,slts,tpts,NULL,Magic_N,0,CLR_NONE);
                    if(irv>0){
                    LastSellTime=iTime(NULL,TimeFrame,0);
                    LastBuyTime=0;
                    return(irv);
                    }
                    else{
                    int tCheck=GetLastError();
                    Print ("Error open SELL. "+fMyErDesc(tCheck));
                    return(-1);
                    }
                    }
                    else{
                    static int lt2=0;
                    if(lt2!=iTime(NULL,TimeFrame,0)){
                    lt2=iTime(NULL,TimeFrame,0);
                    Print("Need open sell. Trade Context Busy");
                    }
                    return(-2);
                    }
                    }
                    else{
                    static int lt3=0;
                    if(lt3!=iTime(NULL,TimeFrame,0)){
                    lt3=iTime(NULL,TimeFrame,0);
                    if(lts==-1)Print("Need open sell. No money");
                    if(lts==-2)Print("Need open sell. Wrong lots size");
                    }
                    return(-3);
                    }
                    }

                    int fMADrawBegin(int aPeriod,int aMethod){
                    switch(aMethod){
                    case 1: return(10*aPeriod);
                    case 2: return(20*aPeriod);
                    }
                    return(aPeriod);
                    }

                    string fMyErDesc(int aErrNum){

                    string pref="Err Num: "+aErrNum+" - ";
                    switch(aErrNum){
                    case 0: return(pref+"NO ERROR");
                    case 1: return(pref+"NO RESULT");
                    case 2: return(pref+"COMMON ERROR");
                    case 3: return(pref+"INVALID TRADE PARAMETERS");
                    case 4: return(pref+"SERVER BUSY");
                    case 5: return(pref+"OLD VERSION");
                    case 6: return(pref+"NO CONNECTION");
                    case 7: return(pref+"NOT ENOUGH RIGHTS");
                    case 8: return(pref+"TOO FREQUENT REQUESTS");
                    case 9: return(pref+"MALFUNCTIONAL TRADE");
                    case 64: return(pref+"ACCOUNT DISABLED");
                    case 65: return(pref+"INVALID ACCOUNT");
                    case 128: return(pref+"TRADE TIMEOUT");
                    case 129: return(pref+"INVALID PRICE");
                    case 130: return(pref+"INVALID STOPS");
                    case 131: return(pref+"INVALID TRADE VOLUME");
                    case 132: return(pref+"MARKET CLOSED");
                    case 133: return(pref+"TRADE DISABLED");
                    case 134: return(pref+"NOT ENOUGH MONEY");
                    case 135: return(pref+"PRICE CHANGED");
                    case 136: return(pref+"OFF QUOTES");
                    case 137: return(pref+"BROKER BUSY");
                    case 138: return(pref+"REQUOTE");
                    case 139: return(pref+"ORDER LOCKED");
                    case 140: return(pref+"LONG POSITIONS ONLY ALLOWED");
                    case 141: return(pref+"TOO MANY REQUESTS");
                    case 145: return(pref+"TRADE MODIFY DENIED");
                    case 146: return(pref+"TRADE CONTEXT BUSY");
                    case 147: return(pref+"TRADE EXPIRATION DENIED");
                    case 148: return(pref+"TRADE TOO MANY ORDERS");
                    //---- mql4 run time errors
                    case 4000: return(pref+"NO MQLERROR");
                    case 4001: return(pref+"WRONG FUNCTION POINTER");
                    case 4002: return(pref+"ARRAY INDEX OUT OF RANGE");
                    case 4003: return(pref+"NO MEMORY FOR FUNCTION CALL STACK");
                    case 4004: return(pref+"RECURSIVE STACK OVERFLOW");
                    case 4005: return(pref+"NOT ENOUGH STACK FOR PARAMETER");
                    case 4006: return(pref+"NO MEMORY FOR PARAMETER STRING");
                    case 4007: return(pref+"NO MEMORY FOR TEMP STRING");
                    case 4008: return(pref+"NOT INITIALIZED STRING");
                    case 4009: return(pref+"NOT INITIALIZED ARRAYSTRING");
                    case 4010: return(pref+"NO MEMORY FOR ARRAYSTRING");
                    case 4011: return(pref+"TOO LONG STRING");
                    case 4012: return(pref+"REMAINDER FROM ZERO DIVIDE");
                    case 4013: return(pref+"ZERO DIVIDE");
                    case 4014: return(pref+"UNKNOWN COMMAND");
                    case 4015: return(pref+"WRONG JUMP");
                    case 4016: return(pref+"NOT INITIALIZED ARRAY");
                    case 4017: return(pref+"DLL CALLS NOT ALLOWED");
                    case 4018: return(pref+"CANNOT LOAD LIBRARY");
                    case 4019: return(pref+"CANNOT CALL FUNCTION");
                    case 4020: return(pref+"EXTERNAL EXPERT CALLS NOT ALLOWED");
                    case 4021: return(pref+"NOT ENOUGH MEMORY FOR RETURNED STRING");
                    case 4022: return(pref+"SYSTEM BUSY");
                    case 4050: return(pref+"INVALID FUNCTION PARAMETERS COUNT");
                    case 4051: return(pref+"INVALID FUNCTION PARAMETER VALUE");
                    case 4052: return(pref+"STRING FUNCTION INTERNAL ERROR");
                    case 4053: return(pref+"SOME ARRAY ERROR");
                    case 4054: return(pref+"INCORRECT SERIES ARRAY USING");
                    case 4055: return(pref+"CUSTOM INDICATOR ERROR");
                    case 4056: return(pref+"INCOMPATIBLE ARRAYS");
                    case 4057: return(pref+"GLOBAL VARIABLES PROCESSING ERROR");
                    case 4058: return(pref+"GLOBAL VARIABLE NOT FOUND");
                    case 4059: return(pref+"FUNCTION NOT ALLOWED IN TESTING MODE");
                    case 4060: return(pref+"FUNCTION NOT CONFIRMED");
                    case 4061: return(pref+"SEND MAIL ERROR");
                    case 4062: return(pref+"STRING PARAMETER EXPECTED");
                    case 4063: return(pref+"INTEGER PARAMETER EXPECTED");
                    case 4064: return(pref+"DOUBLE PARAMETER EXPECTED");
                    case 4065: return(pref+"ARRAY AS PARAMETER EXPECTED");
                    case 4066: return(pref+"HISTORY WILL UPDATED");
                    case 4067: return(pref+"TRADE ERROR");
                    case 4099: return(pref+"END OF FILE");
                    case 4100: return(pref+"SOME FILE ERROR");
                    case 4101: return(pref+"WRONG FILE NAME");
                    case 4102: return(pref+"TOO MANY OPENED FILES");
                    case 4103: return(pref+"CANNOT OPEN FILE");
                    case 4104: return(pref+"INCOMPATIBLE ACCESS TO FILE");
                    case 4105: return(pref+"NO ORDER SELECTED");
                    case 4106: return(pref+"UNKNOWN SYMBOL");
                    case 4107: return(pref+"INVALID PRICE PARAM");
                    case 4108: return(pref+"INVALID TICKET");
                    case 4109: return(pref+"TRADE NOT ALLOWED");
                    case 4110: return(pref+"LONGS NOT ALLOWED");
                    case 4111: return(pref+"SHORTS NOT ALLOWED");
                    case 4200: return(pref+"OBJECT ALREADY EXISTS");
                    case 4201: return(pref+"UNKNOWN OBJECT PROPERTY");
                    case 4202: return(pref+"OBJECT DOES NOT EXIST");
                    case 4203: return(pref+"UNKNOWN OBJECT TYPE");
                    case 4204: return(pref+"NO OBJECT NAME");
                    case 4205: return(pref+"OBJECT COORDINATES ERROR");
                    case 4206: return(pref+"NO SPECIFIED SUBWINDOW");
                    case 4207: return(pref+"SOME OBJECT ERROR");
                    default: return(pref+"WRONG ERR NUM");
                    }
                    }
                     
                    Последний раз редактировалось Gold; 11.04.2013, 00:26.

                    Комментарий

                    • #11 Свернуть

                      Непонятно как он вообще работал.В данном состоянии он не может работать.Убирайте пробелы и компилируйте.И вообще какой то странный советник.На машках есть и попроще.
                       
                      Ничего-еще пару лопат и проскочим.В России все, что делается ключем меньше чем на 17-считается нанотехнологией

                      Комментарий

                      • #12 Свернуть

                        Сообщение от Петро Посмотреть сообщение
                        Непонятно как он вообще работал.В данном состоянии он не может работать.Убирайте пробелы и компилируйте.И вообще какой то странный советник.На машках есть и попроще.
                        Может подскажите, какой?
                        В этом советнике, что понравилось, настройки можно менять машек полностью. Вообще только только начинаю изучать язык программирования. В общем, что в указанном мной советнике написано, для меня большой большой секрет, а вот если бы дали рабочий советник по машкам, был бы признателен.
                           

                        Комментарий

                        • #13 Свернуть

                          Пробуйте-но странно как то работает.

                          MQL код:

                          extern int TimeFrame = 0; // Рабочий таймфрейм. 0 - таймфрейм графика или выбранный в тестере, или значение таймфрейма: 1,5,15,30,60,240
                          extern string e0 = "=== Order ===";
                          extern double Lots = 0.01; // Количество лотов
                          extern int Slippage = 3; // Допустимое проскальзывание
                          extern int StopLoss = 50; // Стоплосс
                          extern int TakeProfit = 50; // Тейкпрофит
                          extern int Magic_N = 1230; // Магик. если несколько экспертов работает на одном символе у них должен быть разный магик.
                          extern string e1 = "=== Orders Management ===";
                          extern int MaxCount = -1; // Ммаксимально допустимое количество открытых ордеров
                          extern int MaxBuyCount = -1; // Максимально допустимое количество открытых ордеров бай, -1 - не ограничено
                          extern int MaxSellCount = -1; // Максимально допустимое количество открытых ордеров селл, -1 - не ограничено
                          extern bool CloseOnRev = True; // Закрывать ордера перед открытием противоположного ордера
                          extern string e4 = "=== Indicators ===";
                          extern int FastMAPeriod = 13; // Период быстрой МА
                          extern int FastMAMethod = 0; // Метод быстрой МА: 0-SMA, 1-EMA, 2-SMMA, 3-LWMA
                          extern int FastMAPrice = 0; // Цена быстрой МА: 0-Close, 1-Open, 2-High, 3-Low, 4-Median, 5-Typical, 6-Weighted
                          extern int FastMAShift = 0; // Сдвиг быстрой МА
                          extern int SlowMAPeriod = 21; // Период медленной МА
                          extern int SlowMAMethod = 0; // Метод медленной МА: 0-SMA, 1-EMA, 2-SMMA, 3-LWMA
                          extern int SlowMAPrice = 0; // Цена Медленной МА: 0-Close, 1-Open, 2-High, 3-Low, 4-Median, 5-Typical, 6-Weighted
                          extern int SlowMAShift = 0; // Сдвиг медленой МА
                          extern bool SlowK_Use = true; // SlowMAPeriod пропорционально FastMAPeriod
                          extern double SlowK = 1.62; // Коэффициент пропорциональности SlowMAPeriod и FastMAPeriod (для устранения бесполезных сочетаний параметров при оптимизации)

                          int LastBuyTime,LastSellTime;
                          double bv,sv;
                          int LastTime;
                          int drb;
                          //+------------------------------------------------------------------+
                          //| expert initialization function |
                          //+------------------------------------------------------------------+
                          int init(){
                          if(SlowK_Use){
                          SlowMAPeriod=MathRound(SlowK*FastMAPeriod);
                          Print("SlowMAPeriod="+SlowMAPeriod);
                          }
                          LastTime=0;
                          drb=1+MathMax(fMADrawBegin(FastMAPeriod,FastMAMeth od)+FastMAShift,fMADrawBegin(SlowMAPeriod,SlowMAMe thod)+SlowMAShift);
                          return(0);
                          }
                          //+------------------------------------------------------------------+
                          //| expert deinitialization function |
                          //+------------------------------------------------------------------+
                          int deinit()
                          {
                          //----
                          //----
                          return(0);
                          }
                          //+------------------------------------------------------------------+
                          //| expert start function |
                          //+------------------------------------------------------------------+
                          int start(){
                          if(iBars(NULL,TimeFrame)<drb){
                          return(0);
                          }

                          if(LastTime==0){
                          LastTime=iTime(NULL,TimeFrame,0);
                          return(0);
                          }

                          static bool ft=false;
                          bool trouble=false;
                          if(!ft){
                          for(int i=0;i<OrdersTotal();i++){
                          if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
                          if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic_N){
                          if(OrderType()==OP_BUY)LastBuyTime=MathMax(LastBuy Time,OrderOpenTime());
                          if(OrderType()==OP_SELL)LastSellTime=MathMax(LastS ellTime,OrderOpenTime());
                          }
                          }
                          else{
                          return(0);
                          }
                          }
                          for(i=0;i<HistoryTotal();i++){
                          if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)){
                          if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic_N){
                          if(OrderType()==OP_BUY)LastBuyTime=MathMax(LastBuy Time,OrderOpenTime());
                          if(OrderType()==OP_SELL)LastSellTime=MathMax(LastS ellTime,OrderOpenTime());
                          }
                          }
                          else{
                          return(0);
                          }
                          }
                          if(LastBuyTime>LastSellTime)LastSellTime=0;
                          if(LastSellTime>LastBuyTime)LastBuyTime=0;
                          if(TimeFrame==0)TimeFrame=Period();
                          LastBuyTime=TimeFrame*60*MathFloor(LastBuyTime/(TimeFrame*60));
                          LastSellTime=TimeFrame*60*MathFloor(LastSellTime/(TimeFrame*60));
                          ft=true;
                          }

                          if(LastTime!=iTime(NULL,TimeFrame,0)){
                          double fast_ma0=iMA(NULL,TimeFrame,FastMAPeriod,FastMAShi ft,FastMAMethod,FastMAPrice,1);
                          double slow_ma0=iMA(NULL,TimeFrame,SlowMAPeriod,SlowMAShi ft,SlowMAMethod,SlowMAPrice,1);
                          double fast_ma1=iMA(NULL,TimeFrame,FastMAPeriod,FastMAShi ft,FastMAMethod,FastMAPrice,2);
                          double slow_ma1=iMA(NULL,TimeFrame,SlowMAPeriod,SlowMAShi ft,SlowMAMethod,SlowMAPrice,2);
                          bool BuySignal=false;
                          bool SellSignal=false;
                          if(fast_ma0>slow_ma0){
                          if(fast_ma1<=slow_ma1){
                          BuySignal=true;
                          }
                          }
                          if(fast_ma0<slow_ma0){
                          if(fast_ma1>=slow_ma1){
                          SellSignal=true;
                          }
                          }
                          if(BuySignal || SellSignal){
                          if(CloseOnRev){
                          if(fOrderCloseMarket(SellSignal,BuySignal)!=0){
                          trouble=true;
                          }
                          }
                          int BuyCount,SellCount;
                          int Total=fMarketOrdersTotal(BuyCount,SellCount);
                          if(Total!=-1){
                          if(Total<MaxCount || MaxCount==-1){
                          if(BuySignal){
                          if(BuyCount<MaxBuyCount || MaxBuyCount==-1){
                          if(LastBuyTime!=iTime(NULL,TimeFrame,0)){
                          if(fOrderOpenBuy()<1){
                          trouble=true;
                          }
                          }
                          }
                          }
                          if(SellSignal){
                          if(SellCount<MaxSellCount || MaxSellCount==-1){
                          if(LastSellTime!=iTime(NULL,TimeFrame,0)){
                          if(fOrderOpenSell()<1){
                          trouble=true;
                          }
                          }
                          }
                          }
                          }
                          }
                          else{
                          trouble=true;
                          }
                          }
                          }

                          return(0);
                          }
                          //+------------------------------------------------------------------+
                          int fOrderCloseMarket(bool aCloseBuy=true,bool aCloseSell=true){
                          int tErr=0;
                          for(int i=OrdersTotal()-1;i>=0;i--){
                          if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
                          if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic_N){
                          if(OrderType()==OP_BUY && aCloseBuy){
                          RefreshRates();
                          if(!IsTradeContextBusy()){
                          if(!OrderClose(OrderTicket(),OrderLots(),ND(Bid),S lippage,CLR_NONE)){
                          int tCheck=GetLastError();
                          Print("Error close BUY "+OrderTicket()+" "+fMyErDesc(tCheck));
                          tErr=-1;
                          }
                          }
                          else{
                          static int lt1=0;
                          if(lt1!=iTime(NULL,TimeFrame,0)){
                          lt1=iTime(NULL,TimeFrame,0);
                          Print("Need close BUY "+OrderTicket()+". Trade Context Busy");
                          }
                          return(-2);
                          }
                          }
                          if(OrderType()==OP_SELL && aCloseSell){
                          RefreshRates();
                          if(!IsTradeContextBusy()){
                          if(!OrderClose(OrderTicket(),OrderLots(),ND(Ask),S lippage,CLR_NONE)){
                          tCheck=GetLastError();
                          Print("Error close SELL "+OrderTicket()+" "+fMyErDesc(tCheck));
                          tErr=-1;
                          }
                          }
                          else{
                          static int lt2=0;
                          if(lt2!=iTime(NULL,TimeFrame,0)){
                          lt2=iTime(NULL,TimeFrame,0);
                          Print("Need close SELL "+OrderTicket()+". Trade Context Busy");
                          }
                          return(-2);
                          }
                          }
                          }
                          }
                          }
                          return(tErr);
                          }

                          double fGetLotsSimple(int aTradeType){
                          if(AccountFreeMarginCheck(Symbol(),aTradeType,Lots )<=0){
                          return(-1);
                          }
                          if(GetLastError()==134){
                          return(-2);
                          }
                          return(Lots);
                          }

                          double ND(double v){return(NormalizeDouble(v,Digits));}
                          int fMarketOrdersTotal(int & aBuyCount,int & aSellCount){
                          for(int i=0;i<OrdersTotal();i++){
                          if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
                          if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic_N){
                          switch (OrderType()){
                          case OP_BUY:
                          aBuyCount++;
                          break;
                          case OP_SELL:
                          aSellCount++;
                          break;
                          }
                          }
                          }
                          else{
                          return(-1);
                          }
                          }
                          return(aBuyCount+aSellCount);
                          }

                          int fOrderOpenBuy(){
                          // fOrderOpenBuy();
                          RefreshRates();
                          double lts=fGetLotsSimple(OP_BUY);
                          if(lts>0){
                          if(!IsTradeContextBusy()){
                          double slts=ND(Ask-Point*StopLoss);
                          if(StopLoss==0)slts=0;
                          double tpts=ND(Ask+Point*TakeProfit);
                          if(TakeProfit==0)tpts=0;
                          int irv=OrderSend(Symbol(),OP_BUY,lts,ND(Ask),Slippage ,slts,tpts,NULL,Magic_N,0,CLR_NONE);
                          if(irv>0){
                          LastBuyTime=iTime(NULL,TimeFrame,0);
                          LastSellTime=0;
                          return(irv);
                          }
                          else{
                          int tCheck=GetLastError();
                          Print ("Error open BUY. "+fMyErDesc(tCheck));
                          return(-1);
                          }
                          }
                          else{
                          static int lt2=0;
                          if(lt2!=iTime(NULL,TimeFrame,0)){
                          lt2=iTime(NULL,TimeFrame,0);
                          Print("Need open buy. Trade Context Busy");
                          }
                          return(-2);
                          }
                          }
                          else{
                          static int lt3=0;
                          if(lt3!=iTime(NULL,TimeFrame,0)){
                          lt3=iTime(NULL,TimeFrame,0);
                          if(lts==-1)Print("Need open buy. No money");
                          if(lts==-2)Print("Need open buy. Wrong lots size");
                          }
                          return(-3);
                          }
                          }

                          int fOrderOpenSell(){
                          // fOrderOpenSell();
                          RefreshRates();
                          double lts=fGetLotsSimple(OP_SELL);
                          if(lts>0){
                          if(!IsTradeContextBusy()){
                          double slts;
                          slts=ND(Bid+Point*StopLoss);
                          if(StopLoss==0)slts=0;
                          double tpts=ND(Bid-Point*TakeProfit);
                          if(TakeProfit==0)tpts=0;
                          int irv=OrderSend(Symbol(),OP_SELL,lts,ND(Bid),Slippag e,slts,tpts,NULL,Magic_N,0,CLR_NONE);
                          if(irv>0){
                          LastSellTime=iTime(NULL,TimeFrame,0);
                          LastBuyTime=0;
                          return(irv);
                          }
                          else{
                          int tCheck=GetLastError();
                          Print ("Error open SELL. "+fMyErDesc(tCheck));
                          return(-1);
                          }
                          }
                          else{
                          static int lt2=0;
                          if(lt2!=iTime(NULL,TimeFrame,0)){
                          lt2=iTime(NULL,TimeFrame,0);
                          Print("Need open sell. Trade Context Busy");
                          }
                          return(-2);
                          }
                          }
                          else{
                          static int lt3=0;
                          if(lt3!=iTime(NULL,TimeFrame,0)){
                          lt3=iTime(NULL,TimeFrame,0);
                          if(lts==-1)Print("Need open sell. No money");
                          if(lts==-2)Print("Need open sell. Wrong lots size");
                          }
                          return(-3);
                          }
                          }
                          int fMADrawBegin(int aPeriod,int aMethod){
                          switch(aMethod){
                          case 1: return(10*aPeriod);
                          case 2: return(20*aPeriod);
                          }
                          return(aPeriod);
                          }
                          string fMyErDesc(int aErrNum){
                          string pref="Err Num: "+aErrNum+" - ";
                          switch(aErrNum){
                          case 0: return(pref+"NO ERROR");
                          case 1: return(pref+"NO RESULT");
                          case 2: return(pref+"COMMON ERROR");
                          case 3: return(pref+"INVALID TRADE PARAMETERS");
                          case 4: return(pref+"SERVER BUSY");
                          case 5: return(pref+"OLD VERSION");
                          case 6: return(pref+"NO CONNECTION");
                          case 7: return(pref+"NOT ENOUGH RIGHTS");
                          case 8: return(pref+"TOO FREQUENT REQUESTS");
                          case 9: return(pref+"MALFUNCTIONAL TRADE");
                          case 64: return(pref+"ACCOUNT DISABLED");
                          case 65: return(pref+"INVALID ACCOUNT");
                          case 128: return(pref+"TRADE TIMEOUT");
                          case 129: return(pref+"INVALID PRICE");
                          case 130: return(pref+"INVALID STOPS");
                          case 131: return(pref+"INVALID TRADE VOLUME");
                          case 132: return(pref+"MARKET CLOSED");
                          case 133: return(pref+"TRADE DISABLED");
                          case 134: return(pref+"NOT ENOUGH MONEY");
                          case 135: return(pref+"PRICE CHANGED");
                          case 136: return(pref+"OFF QUOTES");
                          case 137: return(pref+"BROKER BUSY");
                          case 138: return(pref+"REQUOTE");
                          case 139: return(pref+"ORDER LOCKED");
                          case 140: return(pref+"LONG POSITIONS ONLY ALLOWED");
                          case 141: return(pref+"TOO MANY REQUESTS");
                          case 145: return(pref+"TRADE MODIFY DENIED");
                          case 146: return(pref+"TRADE CONTEXT BUSY");
                          case 147: return(pref+"TRADE EXPIRATION DENIED");
                          case 148: return(pref+"TRADE TOO MANY ORDERS");
                          //---- mql4 run time errors
                          case 4000: return(pref+"NO MQLERROR");
                          case 4001: return(pref+"WRONG FUNCTION POINTER");
                          case 4002: return(pref+"ARRAY INDEX OUT OF RANGE");
                          case 4003: return(pref+"NO MEMORY FOR FUNCTION CALL STACK");
                          case 4004: return(pref+"RECURSIVE STACK OVERFLOW");
                          case 4005: return(pref+"NOT ENOUGH STACK FOR PARAMETER");
                          case 4006: return(pref+"NO MEMORY FOR PARAMETER STRING");
                          case 4007: return(pref+"NO MEMORY FOR TEMP STRING");
                          case 4008: return(pref+"NOT INITIALIZED STRING");
                          case 4009: return(pref+"NOT INITIALIZED ARRAYSTRING");
                          case 4010: return(pref+"NO MEMORY FOR ARRAYSTRING");
                          case 4011: return(pref+"TOO LONG STRING");
                          case 4012: return(pref+"REMAINDER FROM ZERO DIVIDE");
                          case 4013: return(pref+"ZERO DIVIDE");
                          case 4014: return(pref+"UNKNOWN COMMAND");
                          case 4015: return(pref+"WRONG JUMP");
                          case 4016: return(pref+"NOT INITIALIZED ARRAY");
                          case 4017: return(pref+"DLL CALLS NOT ALLOWED");
                          case 4018: return(pref+"CANNOT LOAD LIBRARY");
                          case 4019: return(pref+"CANNOT CALL FUNCTION");
                          case 4020: return(pref+"EXTERNAL EXPERT CALLS NOT ALLOWED");
                          case 4021: return(pref+"NOT ENOUGH MEMORY FOR RETURNED STRING");
                          case 4022: return(pref+"SYSTEM BUSY");
                          case 4050: return(pref+"INVALID FUNCTION PARAMETERS COUNT");
                          case 4051: return(pref+"INVALID FUNCTION PARAMETER VALUE");
                          case 4052: return(pref+"STRING FUNCTION INTERNAL ERROR");
                          case 4053: return(pref+"SOME ARRAY ERROR");
                          case 4054: return(pref+"INCORRECT SERIES ARRAY USING");
                          case 4055: return(pref+"CUSTOM INDICATOR ERROR");
                          case 4056: return(pref+"INCOMPATIBLE ARRAYS");
                          case 4057: return(pref+"GLOBAL VARIABLES PROCESSING ERROR");
                          case 4058: return(pref+"GLOBAL VARIABLE NOT FOUND");
                          case 4059: return(pref+"FUNCTION NOT ALLOWED IN TESTING MODE");
                          case 4060: return(pref+"FUNCTION NOT CONFIRMED");
                          case 4061: return(pref+"SEND MAIL ERROR");
                          case 4062: return(pref+"STRING PARAMETER EXPECTED");
                          case 4063: return(pref+"INTEGER PARAMETER EXPECTED");
                          case 4064: return(pref+"DOUBLE PARAMETER EXPECTED");
                          case 4065: return(pref+"ARRAY AS PARAMETER EXPECTED");
                          case 4066: return(pref+"HISTORY WILL UPDATED");
                          case 4067: return(pref+"TRADE ERROR");
                          case 4099: return(pref+"END OF FILE");
                          case 4100: return(pref+"SOME FILE ERROR");
                          case 4101: return(pref+"WRONG FILE NAME");
                          case 4102: return(pref+"TOO MANY OPENED FILES");
                          case 4103: return(pref+"CANNOT OPEN FILE");
                          case 4104: return(pref+"INCOMPATIBLE ACCESS TO FILE");
                          case 4105: return(pref+"NO ORDER SELECTED");
                          case 4106: return(pref+"UNKNOWN SYMBOL");
                          case 4107: return(pref+"INVALID PRICE PARAM");
                          case 4108: return(pref+"INVALID TICKET");
                          case 4109: return(pref+"TRADE NOT ALLOWED");
                          case 4110: return(pref+"LONGS NOT ALLOWED");
                          case 4111: return(pref+"SHORTS NOT ALLOWED");
                          case 4200: return(pref+"OBJECT ALREADY EXISTS");
                          case 4201: return(pref+"UNKNOWN OBJECT PROPERTY");
                          case 4202: return(pref+"OBJECT DOES NOT EXIST");
                          case 4203: return(pref+"UNKNOWN OBJECT TYPE");
                          case 4204: return(pref+"NO OBJECT NAME");
                          case 4205: return(pref+"OBJECT COORDINATES ERROR");
                          case 4206: return(pref+"NO SPECIFIED SUBWINDOW");
                          case 4207: return(pref+"SOME OBJECT ERROR");
                          default: return(pref+"WRONG ERR NUM");
                          }
                          }
                          return(0);


                          //+------------------------------------------------------------------+
                             
                          Последний раз редактировалось Gold; 11.04.2013, 00:27.
                          Ничего-еще пару лопат и проскочим.В России все, что делается ключем меньше чем на 17-считается нанотехнологией

                          Комментарий

                          • #14 Свернуть

                            Что он делает не так и в каком ДЦ?
                            На Инсте, подавал сигнал только для первого ордера, в другом ДЦ попробовал, все работает вроде бы. А что Вы подправили в советнике?
                            Этим советников попробовал пользоваться, немного маловато для системы.
                            Может быть есть такой советник, в который можно добавлять несколько параметров входа по нескольким индикаторам? Например, МА, RSI, PSar, Stoch/
                             

                            Комментарий

                            • <a href="https://www.instaforex.org/ru/?x=ruforum">InstaForex</a>
                            • #15 Свернуть

                              Скачайте на 7 ой странице в этом же разделе в ветке Бесплатное написание программ на MOL4.Там советник так же на МА и RSI.Работает по индикатору Heiken_Ashi_Smoothed и RSI(отключен).Тралл там тоже отключен.Можете включить при необходимости
                                 
                              Ничего-еще пару лопат и проскочим.В России все, что делается ключем меньше чем на 17-считается нанотехнологией

                              Комментарий

                              Сейчас онлайн

                              working...
                              X