Индикаторный вопрос - страница 8

 
heelflip43:

Я думаю, ваша проблема в том, что вы не сбросили значения val1 и val2. Поэтому, как только вы нашли максимум и последний минимум, вам нужно сбросить их:

Надеюсь, это поможет.
Аааа, я попробую, как только загружусь в windows сегодня позже, спасибо

Я думал, что если бы первое утверждение if(statement) было истинным, то оно бы перезапустило start() снова и сбросило с вершины кода и таким образом сбросило val1 и val2 снова

Ну, то, как я думал об этом - if(first statement) true then prints, and then moves to text the next if(second) likely false then goes back to the top of the start again and resets val1 and val2

Я получаю правильные отпечатки и значения, но просто печатает непрерывно.

Теперь, когда я думаю об этом, я действительно никогда не выяснил это для любого if(statement) даже самый простой из EMA крестов производит непрерывную печать

Я проверю ваш код, который вы разместили, но я был бы удивлен, если бы я добавил операторы печати для печати этих переменных и он также не печатает непрерывно

Я попробую это позже сегодня

Спасибо.
 
Хорошо, да, сброс val1 и val2 вернет мне A high's, но все еще печатает все непрерывно, не так много, как раньше.
Я уверен, что мне нужно что-то сделать с currentTime и iTime, чтобы исправить это, мне нужно просмотреть это еще раз.

Кажется, что в кодовой базе уже должна быть схема ABCD, на которой можно было бы учиться, но, похоже, это то, чего нет, кроме как на основе ZigZag, которую я сейчас просматриваю, чтобы увидеть, дает ли она мне какие-либо подсказки. Но опять же, это тоже индикатор

В любом случае, если я добавляю && macd или что-то еще, он выводит их только один раз, что меня очень смущает.
 
Я думаю, что у меня есть это, после некоторых больше мыслей об этом и работать через это немного больше

Как насчет этого:

//+------------------------------------------------------------------+
//|                                                  Agent86_5min.mq4 |
//|                                                    Unfinished POS |
//|                                    
//+------------------------------------------------------------------+
#property copyright "Unfinished POS by Agent86"


//---- input parameters
extern double    TakeProfit=20.0;
extern double    Lots=0.1;
extern double    StopLoss=10.0;
extern int MagicNumber=123486;

double val1;
double val2;
bool traded = false;
bool A = false;

//++++ These are adjusted for 5 digit brokers.

int     pips2points;    // slippage  3 pips    3=points    30=points
double  pips2dbl;       // Stoploss 15 pips    0.0015      0.00150
int     Digits.pips;    // DoubleToStr(dbl/pips2dbl, Digits.pips)

    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   if (Digits == 5 || Digits == 3)
   {    // Adjust for five (5) digit brokers.
      pips2dbl    = Point*10; pips2points = 10;   Digits.pips = 1;
   } 
   else 
    {    
      pips2dbl    = Point;    pips2points =  1;   Digits.pips = 0; 
    }
    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
     
   
    
//---- 

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return(0);
  }
    
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   
        
   int i=0;
   int ticket,total,result;
   total = OrdersTotal();                 
   val1=iFractals(NULL, 0, MODE_UPPER,3);
   val2=iFractals(NULL, 0, MODE_LOWER,3); 


     
     if(val1 > 0 && traded == false && val2==0)
      { 
      // in the absence of an && indicator above I get continous print statements
      // also does not print A high this is not desired
      // with indicator added && indicator above, then it prints A and B once as it should ???
      // I need to work this out so it won't print all the time aka trade all the time
      // A and B first values seems to initialize the whole block
      // just a reminder that they time stamps coordinate after this FYI
      // now work on C retrace and possibly signals
      // add options for user to select some candle patterns
      // add options to select indicators
      // add bells and whistles to make things fun
      // alerts,sounds,maybe poppup video animation or something
      
      double B = val1;
      Print(B, " B high");
         if(val2==0)
            {
            for (i=0; val2==0; i++)
               {
               val2=iFractals(NULL, 0, MODE_LOWER, i);
               double A = val2;
                  if(A!=0)
                     {
                     Print(A, " A low");
                     }
               }
             }  
      traded=true;
      }
     
     val1=iFractals(NULL, 0, MODE_UPPER,3);
     val2=iFractals(NULL, 0, MODE_LOWER,3); 
     
     if(val2 > 0 && traded == true && val1 == 0)
      {
      B = val2;
      Print(B, " B low");
         if(val1==0)
            {
            for (i=0; val1==0; i++)
               {
               val1=iFractals(NULL, 0, MODE_UPPER, i);
               A = val1;
                  if(A!=0)
                     {
                     Print(A, " A high");
                     }
               }
             }  
      traded=false;
      }
     
                    
                
   return(0);
  }    

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


      

Это печатается только один раз при добавлении

if(val1 > 0 && traded == false && val2==0)

и

if(val2 > 0 && traded == true && val1 == 0)


Итак, я немного приблизился, теперь я могу оценить это еще немного.

Спасибо за помощь всем, это была огромная помощь, потому что это игра мне идеи, чтобы исправить это и расширить мои знания немного больше о переустановке вещей тоже.
Я должен держать это в своем заднем кармане.

Спасибо

 

Большую часть времени проблема не возникает. Кажется, что это происходит только тогда, когда есть верхний и нижний фрактал в одном и том же баре, что иногда случается на неопределенных рынках. Единственный способ обойти это - запускать расчет только один раз в бар:

static datetime currTime;
if(Time[0]!=currTime){
currTime = Time[0];
// Rest of code
}

Это должно означать, что он не будет получать ложные сделки на фракталах, идущих в обе стороны.

 
Теперь я могу начать работать над остальной частью, жаль только, что я не достаточно опытен, чтобы понять преобразование индикатора iCustom в советника, тогда бы я, вероятно, уже давно разобрался с этим.

То, как я делаю это сейчас, будет сложнее, потому что мне все равно придется добавлять индикаторы iCustom наряду с моей логикой кода; и все эти колокольчики и свистки вместо того, чтобы использовать уже работающий индикатор iCustomer в качестве логики кода.

В любом случае, спасибо еще раз, отличная новость на сегодня.
 
Или ваше решение тоже сработает, я был в середине проверки моей теории и не видел вашего сообщения.
 
heelflip43:

Большую часть времени проблема не возникает. Кажется, что это происходит только тогда, когда есть верхний и нижний фрактал в одном и том же баре, что иногда случается на неопределенных рынках. Единственный способ обойти это - запускать расчет только один раз в бар:

Это должно означать, что он не будет получать ложные сделки на фракталах, идущих в обе стороны.

Мне нужно узнать, как эта часть работает немного лучше, я видел это раньше и другие подобные версии, но понимал только частично.

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

Я уверен, что есть другие способы обойти это, и все же я планирую также создать индикатор для этого и рисовать линии от AtoB и т.д.

Я изучу еще немного
 
Вот некоторый прогресс, которого я достиг на данный момент

Может быть, кто-то сможет использовать это, я уверен, что гуру могут пересмотреть это лучше.

В любом случае, он печатает то, что я хочу, и я добавил некоторые внешние значения для уровней fibo, чтобы пользователи могли выбирать, какие уровни им нужны.

Мой первый вклад в код на форумах LOL

У кого-нибудь есть лучший способ выполнить эту задачу Я уже предвижу удвоение кода из-за добавления iCustom индикаторов, чтобы показать, что делает мой код, но это означает как бы двойное кодирование для буфера массива и т.д., а затем использование iCustom

В общем, вот что у меня получилось

//+------------------------------------------------------------------+
//|                                          Unfinished_POS_slate.mq4 |
//|                                                    Unfinished POS |
//|                                    
//+------------------------------------------------------------------+
#property copyright "Unfinished POS slate by Agent86"


//---- input parameters
extern double    TakeProfit=20.0;
extern double    Lots=0.1;
extern double    StopLoss=10.0;
extern int MagicNumber=123486;
extern double fibo_retrace=0.500; //this is C retracement level
extern double fibo_extension=1.618;  // coming soon, D extention 


double val1;
double val2;
bool traded = false;


//++++ These are adjusted for 5 digit brokers.

int     pips2points;    // slippage  3 pips    3=points    30=points
double  pips2dbl;       // Stoploss 15 pips    0.0015      0.00150
int     Digits.pips;    // DoubleToStr(dbl/pips2dbl, Digits.pips)

    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   if (Digits == 5 || Digits == 3)
   {    // Adjust for five (5) digit brokers.
      pips2dbl    = Point*10; pips2points = 10;   Digits.pips = 1;
   } 
   else 
    {    
      pips2dbl    = Point;    pips2points =  1;   Digits.pips = 0; 
    }
    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
     
   
    
//---- 

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return(0);
  }
   
    
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   
        
   int i=0;
   int ticket,total,result;
   total = OrdersTotal();                 
   val1=iFractals(NULL, 0, MODE_UPPER,3);
   val2=iFractals(NULL, 0, MODE_LOWER,3); 

     
     if(val1 > 0 && val2 == 0 && traded == false)
      { 
      double B = val1;
      Print(B, " B high");
      if(val2==0)
         {
         for (i=0; val2==0; i++)
            {
            val2=iFractals(NULL, 0, MODE_LOWER, i);
            double A = val2;
            if(A!=0)
              {
              Print(A, " A low");
              }
            }
          }
       double C = B-(B-A)*fibo_retrace; //retrace 50% no fractal
       Print(C, " UP ABC retrace level");
       if(Bid <= C)
         {
         Print (Bid, " UP ABC C Retrace Hit");
         }  
      
      
      traded=true;
      }
     
     //val1=iFractals(NULL, 0, MODE_UPPER,3); been suggested I might need to reset these here
     //val2=iFractals(NULL, 0, MODE_LOWER,3); I'll investigate this some more
     
     
     if(val2 > 0 && val1 == 0 && traded == true)
      {
      B = val2;
      Print(B, " B low");
      if(val1==0)
        {
        for (i=0; val1==0; i++)
           {
           val1=iFractals(NULL, 0, MODE_UPPER, i);
           A = val1;
           if(A!=0)
             {
              Print(A, " A high");
             }
           }
        }        
             
        C = B+(A-B)*fibo_retrace; //retrace 50% no fractal  //recheck my math on this one
        Print(C, " DOWN ABC retrace level");
        if(Bid <= C)
           {
           Print (Bid, " DOWN ABC C Retrace Hit");
           } 
                 
      traded=false;
      }
     
                    
                
   return(0);
  }    

//+------------------------------------------------------------------+
С моими ограниченными знаниями и опытом это все, что я смог придумать для схемы ABCD

Я еще поработаю над ним, чтобы позволить пользователю менять A's и B's на уровни, которые не нарушают предыдущие A's и B's, чтобы действительно оставаться в пределах тренда и т.д.

Надеюсь, кто-то сможет использовать это или, возможно, дополнить его какими-то лучшими идеями.

Теперь я буду работать над свечными паттернами и индикаторами, чтобы добавить к этому, и всплывающие оповещения, возможно, звуки и всплывающее видео, было бы забавно.

Спасибо всем за помощь.

 

Доброго времени суток уважаемые форумчане!

Меня зовут Герман, мне 23 года, я являюсь трейдером компании "Инстафорекс".

Помогите в поиске нужного скрипта! Скрипт нужен для сетки отложенных ордеров.

 
GERICH:

Доброго времени суток уважаемые форумчане!

Меня зовут Герман, мне 23 года, я являюсь трейдером компании "Инстафорекс".

Помогите в поиске нужного скрипта! Скрипт нужен для сетки отложенных ордеров.

Чувак я не заинтересован в InstaForex и если тебе нужен скрипт сетки пожалуйста размести проект в разделе кодеры на прокат
И пожалуйста пиши на английском

Счастливого трейдинга.
Причина обращения: