[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 59

 
dzhini:
Ну...., пожалуйста, ПРОФИ, дайте ответ, что делать с индикатором. Скажите, возможно или невозможно? (вопрос был написан раньше по ветке, если его продублирую, то у меня будет вторая жёлтая :о) )

Историю подкочать надо.

На Алпари это без проблем. У других брокеров бывают проблемы. Не помню у каторых (тем более о них тут на форуме принята неговорить).

 
OrdersTotal
int OrdersTotal()
Возвращает общее количество открытых и отложенных ордеров.

Можно ли узнать общее количество только открытых ордеров?
 
gince:

Историю подкочать надо.

На Алпари это без проблем. У других брокеров бывают проблемы. Не помню у каторых (тем более о них тут на форуме принята неговорить).

Истории то хватает, с конца июня 2010 (по идее, этого должно хватать, чтобы отрисовывалось за январь 2011). Но не работает даже это. Тут какой-то принципиальный момент в совместимости команд индикатора и работы тестера.
 
Jaguar1974:
Можно ли узнать общее количество только открытых ордеров?
 int Opend(){
     int Ord=0;
     for(int cnt=0;cnt<OrdersTotal();cnt++){
        if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)==true){
          if(OrderMagicNumber()==Magic){
            if(OrderSymbol()==Symbol()){
              if(OrderType()<2)Ord++;
      } } } }        
  return(Ord);} 
 
Добрый день! Помогите решить проблему. Есть советник e-CrossCCI (не мой). Советник работает при пересечении индикаторной линией CCI нулевого уровня, как работает (прибыльно или нет не суть). Причем работает, как со встроенными так и с пользовательскими индикаторами. Есть индикатор Premier stochastic. В советнике изменяю индикатор СCI на Premier stochastic оставляя фактически код без изменения (принцип тот же пересечение нулевого уровня). Ставлю на тестирование. Не выставляет ни одного ордера. В чем может быть проблема? Все во вложении. Результат решения проблемы если можно по ban_61@mail.ru/

Заранее благодарен!!!
Файлы:
123.rar  4 kb
 
ban61:
Добрый день! Помогите решить проблему. Есть советник e-CrossCCI (не мой). Советник работает при пересечении индикаторной линией CCI нулевого уровня, как работает (прибыльно или нет не суть). Причем работает, как со встроенными так и с пользовательскими индикаторами. Есть индикатор Premier stochastic. В советнике изменяю индикатор СCI на Premier stochastic оставляя фактически код без изменения (принцип тот же пересечение нулевого уровня). Ставлю на тестирование. Не выставляет ни одного ордера. В чем может быть проблема? Все во вложении. Результат решения проблемы если можно по ban_61@mail.ru/

Заранее благодарен!!!
вы пробовали разобраться с тем, как работают буфферы индикаторов? Очень полезная статья (https://docs.mql4.com/ru/indicators/iCustom)
 
dzhini:
вы пробовали разобраться с тем, как работают буфферы индикаторов? Очень полезная статья (https://docs.mql4.com/ru/indicators/iCustom)

Статью читал. Индикатор Premier stochastic прописан вроде тоже правильно, добавлены входные параметры:

extern int StochasticLenght=8;

extern int StochasticMode=0;

extern int SmoothLength=25;

extern double Level1=0.9;

extern double Level2=0.2;

прописан индикатор

double cci = iCustom(NULL,0,"Premier stochastic",StochasticLenght,StochasticMode,SmoothLength,Level1,Level2,0,1);

double cci1 = iCustom(NULL,0,"Premier stochastic",StochasticLenght,StochasticMode,SmoothLength,Level1,Level2,0,2);

остальное в исходном коде осталось без изменения.

-

-

 
ban61:

Статью читал. Индикатор Premier stochastic прописан вроде тоже правильно, добавлены входные параметры:

extern int StochasticLenght=8;

extern int StochasticMode=0;

extern int SmoothLength=25;

extern double Level1=0.9;

extern double Level2=0.2;

прописан индикатор

double cci = iCustom(NULL,0,"Premier stochastic",StochasticLenght,StochasticMode,SmoothLength,Level1,Level2,0,1);

double cci1 = iCustom(NULL,0,"Premier stochastic",StochasticLenght,StochasticMode,SmoothLength,Level1,Level2,0,2);

остальное в исходном коде осталось без изменения.

-

-

Вопрос: вы хотите научиться программировать или просто, чтобы вам исправили бота? Если первое, то вам надо понять почему происходит исполнение приказа. Если второе, то так бы и сказали сразу...

А по вашему коду то он берёт данные из одного и того же буфера (которых 5) на предыдущей свече и предпредыдущей, и ждёт наступления данных условий: (cci1<0 && cci>0) или (cci1>0 && cci<0) ....и сдаётся мне, что ждать он их будет целую вечность.

 
Пожалуйста, кто-нибудь посмотрите мой предыдущий вопрос. Не могу определить и исправить ошибку. Код компиллируется, но на тестере не даёт ожидаемый результат.
 

Всем привет!

У меня простой вопрос.

Есть маленькая программка, она состоит из трех файлов:

1. expert vol1, файл в котором находится int start () и т.д.

#include <Variables.mq4>
#import "statistics.mq4"
#import "files.mq4"

int init_main (double &MAIN[], int quantity);
int write (int fh);
int init()
  {  
   return(0);
  }
int deinit()
  {
   return(0);
  }
int start()
  {
  
  init_main(MAIN,50000);
for (int i = 0; i < 1000; i++){
int fh = write(Name);
}
   return(0);
  }

Как Вы видите, я включаю #include <Variables.mq4>
и импортирую #import "statistics.mq4", #import "files.mq4".

2. Variables.mq4 - в нем содержаться переменные.

string  Name = "new";
double MAIN [50000];
double TEN [10];
double CUR [10];
3. files.mq4 в этом вайле находится несколко функций

int init_main (double &MAIN[], int quantity){

int count = 0;
int time = 0;
int end_time = 0;

time = TimeCurrent();

end_time = time + quantity;


while (time != end_time){

MAIN[count] = Ask;

Alert(MAIN[count]);

count++;

time = TimeCurrent();

while (time == TimeCurrent()){}

}
}

int write (int fh){ 

if (fh <  0){
     
     Alert("Неудается открыть файл с таким именем, ошибка ", GetLastError() );
     FileClose(fh);
                  }
     
                      
                      if (fh > 0) {

                      //Alert("Записываю тики в файл ", file_name, " !");
                      //Alert(StrToInteger(CharToStr(StringGetChar(file_name,0))));
                     
                 
                 
               
                      FileSeek(fh, 0, SEEK_END);
                      FileWrite(fh, TimeToStr(TimeCurrent(), TIME_DATE|TIME_SECONDS), " ", Ask, " ", Bid);
                      FileClose(fh);
                      return;

            }  
}
Суть проблемы заключается в том, что компилятор выдает мне 'MAIN' - variable not defined и

'Name' - variable not defined !

Но как же так, я ведь объявил их Variables.mq4 ?

Если кто поможет, буду очень благодарен!

Заранее спасибо за ответ!

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