советник (Expert) на основе АМА - страница 2

 

народ помогите разобраться с логикой

не могу ВТОРОЙ вопрос решить "2. Не точно выполняются условия."

вот навоял, но както мне кажется что не правильно : может кто помочь с логикой?

// Торговые критерии
   MA_1_t=iCustom(Symbol(),0,"AMA_optimized",1,1); // МА_1
   MA_2_t=iCustom(Symbol(),0,"AMA_optimized",2,1); // МА_2
   MA_3_t=iCustom(Symbol(),0,"AMA_optimized",1,2); // МА_2
   MA_4_t=iCustom(Symbol(),0,"AMA_optimized",2,2); // МА_4      
//---------------------------------------------------------------- 5.1 БЛОК ФЛАГА
   static datetime New_Time;  
   bool New_Bar; 
   bool wayUP, wayDOWN;  

   if(New_Time!=Time[0])
     {
      New_Time=Time[0]; 
      New_Bar=true; 
      if (MA_1_t!=0) wayUP=true; wayDOWN=false;
      if (MA_2_t!=0) wayDOWN=true; wayUP=false;
     } else { New_Bar=false;}
//---------------------------------------------------------------- 5.1 БЛОК ФЛАГА
   
   if (MA_1_t!=0 && MA_3_t==0 && wayDOWN==true)               // Если разница между 
     {                                                        // 
       if (New_Bar==true) Opn_B=true; New_Bar=false;          // Критерий откр. Buy
        //Cls_S=true;                                         // Критерий закр. Sell 
     }
   if (MA_2_t!=0 && MA_4_t==0 && wayUP==true)                 // Если разница между
     {                                                        // 
       if (New_Bar==true) Opn_S=true; New_Bar=false;          // Критерий откр. Sell
        //Cls_B=true;                                         // Критерий закр. Buy
     }
//--------------------------------------------------------------- 6 --
помогите, а то дельше продвигаться не могу. На логике застрял
 
asisdes >>:

народ помогите разобраться с логикой

не могу ВТОРОЙ вопрос решить "2. Не точно выполняются условия."

вот навоял, но както мне кажется что не правильно : может кто помочь с логикой?

помогите, а то дельше продвигаться не могу. На логике застрял
/ Торговые критерии
   MA_1_t=iCustom(Symbol(),0,"AMA_optimized",1,1); // МА_1
   MA_2_t=iCustom(Symbol(),0,"AMA_optimized",2,1); // МА_2
   MA_3_t=iCustom(Symbol(),0,"AMA_optimized",1,2); // МА_2
   MA_4_t=iCustom(Symbol(),0,"AMA_optimized",2,2); // МА_4      
//---------------------------------------------------------------- 5.1 БЛОК ФЛАГА
   static datetime New_Time;  
   bool New_Bar; 
   bool wayUP, wayDOWN;  

   if(New_Time!=Time[0])
     {
      New_Time=Time[0]; 
      New_Bar=true; 
      if (MA_1_t!=0) {wayUP=true; wayDOWN=false;} 
      if (MA_2_t!=0) {wayDOWN=true; wayUP=false;}
     } else { New_Bar=false;}
//---------------------------------------------------------------- 5.1 БЛОК ФЛАГА
   
   if (MA_1_t!=0 && MA_3_t==0 && wayDOWN==true)               // Если разница между 
     {                                                        // 
       if (New_Bar==true) 
        {
         Opn_B=true; 
         New_Bar=false;
        }          // Критерий откр. Buy
        //Cls_S=true;                                         // Критерий закр. Sell 
     }
   if (MA_2_t!=0 && MA_4_t==0 && wayUP==true)                 // Если разница между
     {                                                        // 
       if (New_Bar==true) 
        {
         Opn_S=true;
         New_Bar=false;
        }          // Критерий откр. Sell
        //Cls_B=true;                                         // Критерий закр. Buy
     }
//--------------------------------------------------------------- 6 --
Попробуй так У тебя два условия после if если условий больше одного то надо брать в фигурные скобки
 

НЕЕЕТ брат не работает! Логика у меня не правильная? пипец...


забача очень простая

когда откроется новый бар, бар с номером 1 может принять значения MA_1_t!=0 тогда я должен сравнить направление тренда до 1 бара,

Вопрос как с помощью логики или цикла определить какой был тренд до 1 бара


с логикой не очень у меня!


думал for for двойной цикл использовать, напрмиер

10 баров по 3 сигналам

например, какие значения могу принимать:

0 1 0 1 0 1 1 0 0 1 0

0 0 1 0 1 0 0 0 1 0 1


и пребирать, нотоже както пипец

 

и еще прикол в моей логике!

if (MA_1_t!=0) {wayUP=true; wayDOWN=false;} 

if (MA_1_t!=0 && MA_3_t==0 && wayDOWN==true)

позиции не открываються потому что первый ИФ
wayDOWN=false поднимает флаг и все, позиции не отрываются

MA_1_t!=0 && MA_3_t==0 - это условие пока является не достаточным






 
 

ну во всяком случае по синтаксису только такие проблемы

 

//---------------------------------------------------------------- 5.1 ???? ?????
static datetime New_Time;
bool New_Bar;
bool wayUP, wayDOWN;

if(New_Time!=Time[0])
{
New_Time=Time[0];
New_Bar=true;
}
else { New_Bar=false;
}
//---------------------------------------------------------------- 5.1

if (New_Bar==true) {
if (MA_3_t!=0 && MA_4_t==0) { wayUP=true; wayDOWN=false; }
if (MA_4_t!=0 && MA_3_t==0) { wayDOWN=true; wayUP=false; }
}

if (New_Bar==true && MA_1_t!=0 && wayDOWN==true) // && MA_3_t==0
{
Opn_B=true;
New_Bar=false;

//Cls_S=true;
}

if (New_Bar==true && MA_2_t!=0 && wayUP==true) // && MA_4_t==0
{
Opn_S=true;
New_Bar=false;

//Cls_B=true;
}



\\\\\\\\\\\\\\\\\\\\\\\

у такое ощущение то флажок не держится, когда конкретно идет смена с красного на синий шарик, торговля идет, а вот если будет пробел торговля не идет

т.е. если

MA_3_t==0 && MA_4_t==0

MA_4_t==0 && MA_3_t==0

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

может у что то не понел, вообще теперь точно ни чего не понимаю,

 
почему индюка не выложил? шаблон советника взят из курс по mql (alpari), если я не ошибаюсь.
 

Здравствуйте.

Подскажите как правильно обращаться из советника к идикатору AMA_optimized

При стандартном обращении выдает непонятные результаты :(.

параметры передающиеся из советника индикатору:

extern int    Timeframe = 1;

extern int       periodAMA=120;
extern double    nfast=1.0;
extern double    nslow=30.0;
extern double    G=4.0;
extern double    dK=0.005;
extern int       PriceType=0; // цена, от которой строится 
extern int       AMA_Trend_Type=1;

Цикл вычисления индикатора для загрузки в буферы:

           for(bar = 1; bar < 3; bar++)
                {
                AMAbuffer[bar] = iCustom(NULL, Timeframe,"AMA_optimized", periodAMA, nfast,nslow,G,dK,PriceType,AMA_Trend_Type, 0, bar);
                upAMA[bar] = iCustom(NULL, Timeframe,"AMA_optimized", periodAMA, nfast,nslow,G,dK,PriceType,AMA_Trend_Type, 1, bar);
                downAMA[bar] = iCustom(NULL, Timeframe,"AMA_optimized", periodAMA, nfast,nslow,G,dK,PriceType,AMA_Trend_Type, 2, bar);
               
                bartime=iTime(NULL,1,0);
                
                Print (bar+"|"+TimeToStr(bartime,TIME_DATE)+"|"+TimeToStr(bartime,TIME_SECONDS )+"|"+AMAbuffer[bar]+"|"+ upAMA[bar]+"|"+ downAMA[bar]);
                }

В журнале вот такие результаты:

2009.09.10 18:25:17 2009.09.09 23:15 AMA_Optimized_Trail_Trade GBPUSD,M1: 2|2009.09.09|23:15:00|0.00000000|0.00000000|0.00000000
2009.09.10 18:25:17 2009.09.09 23:15 AMA_Optimized_Trail_Trade GBPUSD,M1: 1|2009.09.09|23:15:00|1.60722465|1.60722465|0.00000000
2009.09.10 18:25:17 2009.09.09 23:15 AMA_Optimized_Trail_Trade GBPUSD,M1: 2|2009.09.09|23:15:00|0.00000000|0.00000000|0.00000000
2009.09.10 18:25:17 2009.09.09 23:15 AMA_Optimized_Trail_Trade GBPUSD,M1: 1|2009.09.09|23:15:00|1.60722465|1.60722465|0.00000000
2009.09.10 18:25:17 2009.09.09 23:15 AMA_Optimized_Trail_Trade GBPUSD,M1: 2|2009.09.09|23:15:00|0.00000000|0.00000000|0.00000000
2009.09.10 18:25:17 2009.09.09 23:15 AMA_Optimized_Trail_Trade GBPUSD,M1: 1|2009.09.09|23:15:00|1.60722465|1.60722465|0.00000000
2009.09.10 18:25:17 2009.09.09 23:15 AMA_Optimized_Trail_Trade GBPUSD,M1: 2|2009.09.09|23:15:00|0.00000000|0.00000000|0.00000000
2009.09.10 18:25:17 2009.09.09 23:15 AMA_Optimized_Trail_Trade GBPUSD,M1: 1|2009.09.09|23:15:00|1.60722465|1.60722465|0.00000000
2009.09.10 18:25:17 2009.09.09 23:15 AMA_Optimized_Trail_Trade GBPUSD,M1: 2|2009.09.09|23:15:00|0.00000000|0.00000000|0.00000000
2009.09.10 18:25:17 2009.09.09 23:15 AMA_Optimized_Trail_Trade GBPUSD,M1: 1|2009.09.09|23:15:00|1.60722465|1.60722465|0.00000000
2009.09.10 18:25:17 2009.09.09 23:15 AMA_Optimized_Trail_Trade GBPUSD,M1: 2|2009.09.09|23:15:00|0.00000000|0.00000000|0.00000000
2009.09.10 18:25:17 2009.09.09 23:15 AMA_Optimized_Trail_Trade GBPUSD,M1: 1|2009.09.09|23:15:00|1.60722465|1.60722465|0.00000000
2009.09.10 18:25:17 2009.09.09 23:15 AMA_Optimized_Trail_Trade GBPUSD,M1: 2|2009.09.09|23:15:00|0.00000000|0.00000000|0.00000000
2009.09.10 18:25:17 2009.09.09 23:15 AMA_Optimized_Trail_Trade GBPUSD,M1: 1|2009.09.09|23:15:00|1.60722465|1.60722465|0.00000000
2009.09.10 18:25:17 2009.09.09 23:14 AMA_Optimized_Trail_Trade GBPUSD,M1: 2|2009.09.09|23:14:00|0.00000000|0.00000000|0.00000000
2009.09.10 18:25:17 2009.09.09 23:14 AMA_Optimized_Trail_Trade GBPUSD,M1: 1|2009.09.09|23:14:00|1.60721745|1.60721745|0.00000000
2009.09.10 18:25:17 2009.09.09 23:14 AMA_Optimized_Trail_Trade GBPUSD,M1: 2|2009.09.09|23:14:00|0.00000000|0.00000000|0.00000000
2009.09.10 18:25:17 2009.09.09 23:14 AMA_Optimized_Trail_Trade GBPUSD,M1: 1|2009.09.09|23:14:00|1.60721745|1.60721745|0.00000000

Если смотреть показания индикатора в окне графика в указанное время цифры с данными не совпадают :(.

 

простите забросил его делать не много сливает, а так работает

. советник готов прилогаю,

коде не много лишнего есть местами потому что из кусков на лету делал

держите у кокго

Файлы:
 

кстати, у тебя нет ни какой ошибки в коде все правильно, тебе принт в журнал вписывает то что надо.

Причина обращения: