![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
NoName |
![]()
Сообщение
#161
|
![]() Группа: Активный участник Сообщений: 514 Регистрация: 1.5.2006 Из: Украина, Кременчуг Пользователь №: 146 Спасибо сказали: 0 раз(а) ![]() |
Цитата Пож. скажи что делает этот блок?-- Этот блок проверяет есть ли открытая позиция с интересующим Magic. Может возвращать true или false. Т.е. для того что бы узнать есть ли открытая позиция данного советника, нужно написать: if(ExpertOrder(Magic)) { ...открытая позиция есть, делаем что-то } Цитата Вот ещё проблема с мультивалютной версией! В ОНЛАЙНЕ. Первая пара работает нормально! а ВОТ ВТОРАЯ - НЕ ХОЧЕТ ВКЛЮЧАТЬСЯ! Возможно причина в функции OrderSend, кот. мы используем для открытия позиций. Да! Так и есть. В журнале наверняка выводится ошибка об этом. Значения Ask, Bid, Point для второй пары нужно получить через MarketInfo. Цитата Непонятно ещё, - где указан тф по второй паре. Для функции OrderSend таймфрейм неважен. |
leonid553 |
![]()
Сообщение
#162
|
![]() Группа: Активный участник Сообщений: 2 002 Регистрация: 14.4.2006 Из: г.Самара Пользователь №: 28 Спасибо сказали: 11 раз(а) ![]() |
Всё понятно теперь!
За исключением ТФ! Откуда советник знает, - по какому ТФ открывать ордер по второй (и даже по третьей - в перспективе) паре? ![]() |
NoName |
![]()
Сообщение
#163
|
![]() Группа: Активный участник Сообщений: 514 Регистрация: 1.5.2006 Из: Украина, Кременчуг Пользователь №: 146 Спасибо сказали: 0 раз(а) ![]() |
Какая разница по какому ТФ открывать позицию? На любом таймфрейме Bid и Ask будут одинаковыми
![]() |
leonid553 |
![]()
Сообщение
#164
|
![]() Группа: Активный участник Сообщений: 2 002 Регистрация: 14.4.2006 Из: г.Самара Пользователь №: 28 Спасибо сказали: 11 раз(а) ![]() |
Но показания индюков-то должны сниматься с конкретного тф!
|
NoName |
![]()
Сообщение
#165
|
![]() Группа: Активный участник Сообщений: 514 Регистрация: 1.5.2006 Из: Украина, Кременчуг Пользователь №: 146 Спасибо сказали: 0 раз(а) ![]() |
У индюков вторым параметром идёт таймфрейм:
( string symbol, int timeframe ... ) Не путай индюки и OrderSend ![]() |
leonid553 |
![]()
Сообщение
#166
|
![]() Группа: Активный участник Сообщений: 2 002 Регистрация: 14.4.2006 Из: г.Самара Пользователь №: 28 Спасибо сказали: 11 раз(а) ![]() |
Благодарю! На сегодня вопросов больше нэт!
|
leonid553 |
![]()
Сообщение
#167
|
![]() Группа: Активный участник Сообщений: 2 002 Регистрация: 14.4.2006 Из: г.Самара Пользователь №: 28 Спасибо сказали: 11 раз(а) ![]() |
По мультивалютному сделал так:
(Задействовал ф-ю MarketInfo для второй пары! ) Код //========================= USDCHF ====================================== if (CHF) { //если "выключатель" включен if (!ExpertOrder(MagicCHF)) { double bid = MarketInfo("USDCHF", MODE_BID); double ask = MarketInfo("USDCHF", MODE_ASK); double point =MarketInfo("USDCHF",MODE_POINT); //-------Проверяем условие на покупку---------- if ( .... ... ) { //---- Цикл открытия ордера ------------------------------------------- Cnt=1; while (Cnt <= 5) { //-----Покупаем---------- Lots=GetSizeLot(); if (OrderSend("USDCHF", OP_BUY, Lots, ask, 3, bid - sl_USDCHF * point, ask+tp_USDCHF* Point,"Revers", MagicCHF, 0, Red) > 0) break; И ТЕПЕРЬ в блоке расчета индикаторов, - там не задан ТФ - второй пары! Если для первой пары индюк расчитывается по тому тф, на кот. стоит советник, то для второй пары здесь (и далее) видимо нужно задавать этот тф? - Код /************* то же самое для USDCHF **************************** double Stochastic_array_[49]; //------заполняем массив значениями Stochastic USDCHF ----------- int k=0; while (k<50) { Stochastic_array_[k]=iStochastic(NULL,240,USDCHF_period,3,3,MODE_SMA,0,MODE_MAIN,k); k++; .... .... } И вот смотрю - мелькает строчка RefreshRates(); - в твоей версии GEN+REV по AI (по сопровожд. поз) - зачем она нужна , мож и мне добавить куда ниб;? Добавлю что в онлайне - по отдельности обе пары на своих графиках работают! А журнал - вторую пару - даже не замечает! (по 1мин-графику смотрю) |
NoName |
![]()
Сообщение
#168
|
![]() Группа: Активный участник Сообщений: 514 Регистрация: 1.5.2006 Из: Украина, Кременчуг Пользователь №: 146 Спасибо сказали: 0 раз(а) ![]() |
Вот тут ошибка:
OrderSend("USDCHF", OP_BUY, Lots, ask, 3, bid - sl_USDCHF * point, ask+tp_USDCHF* Point,"Revers", MagicCHF, 0, Red) В твоём случае нужно поставить point. Для расчёта индикатора на второй паре, нужно написать так: iStochastic("USDCHF", 240, USDCHF_period, ... // а дальше как обычно. Первым параметром ты указываешь инструмент, с которого брать значения индикатора, а вторым указываешь ТФ. Добавлю что в онлайне - по отдельности обе пары на своих графиках работают! А журнал - вторую пару - даже не замечает! (по 1мин-графику смотрю) Смотришь по минутному, а в коде жёстко привязал к H4. Stochastic_array_[k]=iStochastic(NULL,240,USDCHF_period,3,3,MODE_SMA,0,MODE_MAIN,k); |
leonid553 |
![]()
Сообщение
#169
|
![]() Группа: Активный участник Сообщений: 2 002 Регистрация: 14.4.2006 Из: г.Самара Пользователь №: 28 Спасибо сказали: 11 раз(а) ![]() |
да нет! это я здесь так написал - "240"! (не совсем уж такой дурень...),
а ставлю конечно минутки... сейчас попробую с учетом всего сказанного... //************************************************************* Сделал. Скрупулёзно проверил. Запустил. И заработал эксперт! ПО обеим парам заработал! На тф=1 мин. ----------------------------------------------------- Ну и последний вопрос в эту тему (по мульти) - double Stochastic_array_[49]; //------заполняем массив значениями Stochastic USDCHF ----------- int k=0; while (k<50) { Stochastic_array_[k]=iStochastic("USDCHF",240,USDCHF_period,3,3,MODE_SMA,0,MODE_MAIN,k); k++; ------------------------------------------------------------- Если мы используем всего два значения (посл. и предпосл.) то зачем берем [49] ? |
NoName |
![]()
Сообщение
#170
|
![]() Группа: Активный участник Сообщений: 514 Регистрация: 1.5.2006 Из: Украина, Кременчуг Пользователь №: 146 Спасибо сказали: 0 раз(а) ![]() |
Число 49 взял от фонаря. Почему именно его - не помню (действительно, почему не 50 ?
![]() Кстати, этот цикл сильно тормозит советник, т.к. пересчитывается на каждом тике. Лучше использовать внешний индикатор, который я тебе присылал, а его значения снимать в советнике через iCustom. |
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 13.5.2025, 21:30 |