Может ли один советник отслеживать и торговать несколькими валютными парами на одном графике? - страница 2

 
angevoyageur:

Если вы не хотите отвечать на его вопрос, не отвечайте, это просто. Не нужно обижать людей.

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



Если бы он провел исследование и заглянул в Code Base, то нашел бы, например, https://www.mql5.com/en/code/11176.

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

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

не делая никаких попыток сам...

Как CodeMonkey написал xennon.

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

.

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

Думаю, вы понимаете ситуацию так, как я ее вижу...

 
deVries:


Если бы он провел исследование и заглянул в Code Base, то нашел бы, например, https://www.mql5.com/en/code/11176.

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

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

не делая никаких попыток сам...

Как CodeMonkey написал xennon.

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

.

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

Думаю, вы понимаете ситуацию так, как понимаю ее я...

Конечно, я согласен.

Но я также согласен, что если кто-то отвечает, не нужно оскорблять ОП (или любого другого пользователя). Я думаю, что этому форуму нужна лучшая атмосфера.

 
deVries:

xennon: зарегистрирован с января 2012 года и теперь приходит сюда с этим вопросом?

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

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

это возможно .... после более чем 2 лет он знает это теперь наверняка


Да, 2 года, и что?! Это не значит, что я активно возился с MQL, не так ли? - На самом деле мой коллективный опыт работы с MQL, вероятно, меньше месяца, ВСЕГО. Я предлагаю вам либо внести что-то позитивное и полезное, либо xxxx. Какое глупое и идиотское заявление.
 
xennon:

Да, 2 года и что?! Это не значит, что я активно возился с MQL, не так ли? - На самом деле мой коллективный опыт работы с MQL, вероятно, меньше месяца, ВСЕГО. Я предлагаю вам либо внести что-то позитивное и полезное, либо xxx. Какое глупое и идиотское заявление.

Я уже советовал вам следить за своим языком. Это мое последнее предупреждение.

Спасибо.

 
xennon:

Да, 2 года, и что?! Это не значит, что я активно возился с MQL, не так ли? - На самом деле мой коллективный опыт работы с MQL, вероятно, меньше месяца, ВСЕГО. Я предлагаю вам либо внести что-то позитивное и полезное, либо xxxx. Какое глупое и идиотское заявление.


пример из codebase, который я привел ???? https://www.mql5.com/en/forum/149766/page2#915892

 
xennon:

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

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

Я подозреваю, что это невозможно сделать, но было бы интересно узнать, есть ли у кого-нибудь идеи, как достичь этого без необходимости открывать множество графиков и применять советника к каждому графику отдельно, главным образом в интересах эффективности (лучше иметь 1 блок кода вместо дюжины?).


Спасибо.


Я бы сделал ставку на строковый массив для символов, а затем выполнил цикл для всех интересующих символов.

Что-то вроде

string nameArray[]={"EURUSD","...","USDJPY"};

затем

for(x=numberOfSymbols;x>=0;x--)
   {
   string symbol=nameArray[x];
   CustomCondition(symbol)
   ....
   .....
//or something like that
 
xennon:

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

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

Я подозреваю, что это невозможно сделать, но было бы интересно узнать, есть ли у кого-нибудь идеи, как достичь этого без необходимости открывать множество графиков и применять советника к каждому графику отдельно, в основном в интересах эффективности (лучше иметь 1 блок кода вместо дюжины?).


Спасибо.

Привет, Ксенон,

Короткий ответ на ваш вопрос - да.

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

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

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

Я попытаюсь немного объяснить это. Массив nameArray будет хранить каждый символ как массив, но, что более важно, элемент массива может быть использован для установки позиции для двух других массивов, поскольку они не могут использовать строку для определения позиции в массиве, но значение индекса может. Поскольку тики для каждого символа поступают в разное время, данные, записываемые в PriceArray, не будут все одновременно, так как некоторые символы более активны в разное время, поэтому второй массив хранит индекс для массива PriceData, чтобы его можно было быстро записать, не перезаписывая прошлые ценовые данные. В третий массив записываются необходимые вам ценовые данные.

Код представляет собой сочетание кода и английского языка с тем, что необходимо добавить. Он очень прост, но должен послужить отправной точкой для вашей идеи. Есть многочисленные пробелы, например, как поступать с массивами, когда они достигают конца, но это все часть кривой обучения. Я предлагаю заставить код работать с одним символом, затем с двумя, и так далее, чтобы вы могли отсеять и исправить любые ошибки в коде. Как я уже говорил, это всего лишь черновой вариант, поэтому используйте его как таковой, возможны улучшения, например, вы можете использовать тип данных Struct или объект вместо трех массивов для хранения данных тиков, но эта конструкция немного проще для начала, и вы можете изучить структуры и объектно-ориентированное программирование на более поздней стадии кодирования.

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

Вот псевдокод,

// OnInit ()
    {
     string nameArray[]={"EURUSD","...","USDJPY"};                         // As suggested by thrdel. Creates an array with currency pairs
     int TicksRecorded [#  of symbols monitored];                           // Records the required position in the PriceData array to write the next tick data to for each symbol
     double PriceData [#  of symbols monitored][Ticks][data to record];     // Stores price data for each symbol required for as many ticks as required

     Create the timer and set an appropriate interval
     Open a file to save data if required for future use
     
     for (x=0; x < #  of symboels; x++)                                     // Get all prices for all the symbols you want and store them in the first position of the Ticks and data to record dimensions
           {                                                               // Also adapted from thrdel's code example
            PriceData [x][0][0] = Ask;
            PriceData [x][0][0] = Bid;
            ... whatever else you want to record
           }

// EventSetMillisecondTimer()
    {
     Refresh all price data for all symbols
     for (x=0; x < #  of symbols; x++)                                     // Get all prices for all the symbols you want and store them in the first position of the Ticks and data to record dimensions
           {
            if ((current Ask != to previously recorded Ask for that x) or (current Bid != to previously recorded Bid for that x)... and every other price data you want)
                {
                 TicksRecorded [x]++;                                    // Increments the position in the PriceData array holding the latest tick data for that symbol
                 PriceData [x][TicksRecorded[x]][0] = Ask;
                 PriceData [x][TicksRecorded[x]][1] = Bid;
                 ... and whatever else you want to record
                 Flag to indicate a new tick has been received set to true
                }
            if (new data)
                {
                 Set new data flag to false
                 Do custom action
                }
           }
     }

// OnDeinit ()
     {
      Kill the timer
      Save data to a file if required
     }
 

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

Хотя вы должны сделать свою ea более надежной и не привязанной к одному графику.

 

Почему следующее не будет работать?


if (this is true){

ticket=OrderSend("GBPUSD",OP_SELL,lot,Bid,0,0,0,"",0,0,Red);

ticket=OrderSend("GBPJPY",OP_BUY,lot,Ask,0,0,0,"",0,0,Green);

ticket=OrderSend("USDJPY",OP_BUY,lot,Ask,0,0,0,"",0,0,Green);

}


выскакивает ошибка 4106 символ неизвестен

 
Daniel Laverdiere: Почему следующее не будет работать?

if (this is true){

ticket=OrderSend("GBPUSD",OP_SELL,lot,Bid,0,0,0,"",0,0,Red);

ticket=OrderSend("GBPJPY",OP_BUY,lot,Ask,0,0,0,"",0,0,Green);

ticket=OrderSend("USDJPY",OP_BUY,lot,Ask,0,0,0,"",0,0,Green);

}


выскакивает ошибка 4106 символ неизвестен

  1. Когда вы публикуете код, пожалуйста, используйте кнопку SRC!

  2. Если именование ваших графиков не совсем"BasQuo", то это не может работать.

  3. Не торгуйте несколькими валютами в одном советнике.
Причина обращения: