Ответ
 
Опции темы
Старый 29.07.2014, 01:15   #2941 (permalink)
Прохожий
 
Аватар для commready
 
Регистрация: 13.02.2014
Сообщений: 2
Репутация: 1
commready
Сказал(а) спасибо: 77
Поблагодарили 0 раз(а) в 0 сообщениях
Поинты: 2
Сообщение от Ugar Посмотреть сообщение
Это переменная, она не открывает ордера, ей всего лишь присваивается значение.

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

Один крокодил красный, другой налево. Помогите посчитать, сколько стоит ящик жареных гвоздей.
спасибо
commready вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 29.07.2014, 04:42   #2942 (permalink)
 
Аватар для ksardas
 
Регистрация: 20.10.2013
Адрес: Лас-Пальмас-де-Гран-Канария
Сообщений: 701
Репутация: 2595
ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas
Сказал(а) спасибо: 680
Поблагодарили 2,598 раз(а) в 582 сообщениях
Поинты: 475
Вот спасибо mobidik!!!
Теперь все верно работает! и можно не сравнивать и не считать. забить все условия и посмотреть, Красота!!!!!

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Ты не старайся, и у тебя всё получится.
ksardas вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 31.07.2014, 07:58   #2943 (permalink)
Интересующийся
 
Аватар для Rost
 
Регистрация: 16.06.2010
Сообщений: 13
Репутация: 4
Rost
Сказал(а) спасибо: 8
Поблагодарили 3 раз(а) в 2 сообщениях
Поинты: 12
Подскажите, пожалуйста, как мне в советнике определить datetime начала текущего месяца:
datetime dt = ???
Rost вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 31.07.2014, 08:38   #2944 (permalink)
Активный участник
 
Аватар для _SERG_
 
Регистрация: 21.07.2009
Сообщений: 242
Репутация: 75
_SERG_
Сказал(а) спасибо: 7
Поблагодарили 75 раз(а) в 61 сообщениях
Поинты: 284
Сообщение от Rost Посмотреть сообщение
Подскажите, пожалуйста, как мне в советнике определить datetime начала текущего месяца:
datetime dt = ???

double iOpen(
string symbol, // символ
int timeframe, // период
int shift // сдвиг
);




PERIOD_MN1
43200
1 месяц

datetime dt = iOpen(Symbol(),PERIOD_MN1,0);



как вариант, где-то так.
_SERG_ вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 31.07.2014, 08:43   #2945 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,009
Репутация: 829
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 843 раз(а) в 554 сообщениях
Поинты: 1308
iOpen - цена открытия, время открытия - iTime oO
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 31.07.2014, 10:27   #2946 (permalink)
Активный участник
 
Аватар для _SERG_
 
Регистрация: 21.07.2009
Сообщений: 242
Репутация: 75
_SERG_
Сказал(а) спасибо: 7
Поблагодарили 75 раз(а) в 61 сообщениях
Поинты: 284
Сообщение от Rost Посмотреть сообщение
Подскажите, пожалуйста, как мне в советнике определить datetime начала текущего месяца:
datetime dt = ???
Недосмотрел, iOpen надо заменить на iTime.
_SERG_ вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 31.07.2014, 10:48   #2947 (permalink)
Местный знаток
 
Аватар для zhserg
 
Регистрация: 16.12.2012
Адрес: Россия, Сибирь
Сообщений: 508
Репутация: 724
zhserg - zhserg - zhserg - zhserg - zhserg - zhserg - zhserg -
Сказал(а) спасибо: 39
Поблагодарили 721 раз(а) в 301 сообщениях
Поинты: 127
Отправить сообщение для zhserg с помощью Skype™
Сообщение от Rost Посмотреть сообщение
Подскажите, пожалуйста, как мне в советнике определить datetime начала текущего месяца:
datetime dt = ???
Можно так
PHP код:
datetime dt=StrToTime(IntegerToString(Year())+"."+IntegerToString(Month())); 

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
zhserg.ru советники, скрипты, индикаторы на заказ
zhserg на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 31.07.2014, 13:39   #2948 (permalink)
Активный участник
 
Аватар для _SERG_
 
Регистрация: 21.07.2009
Сообщений: 242
Репутация: 75
_SERG_
Сказал(а) спасибо: 7
Поблагодарили 75 раз(а) в 61 сообщениях
Поинты: 284
Накачука и я вопросик.
Ну, с динамическим именем переменой вопросов нет, а вот с динамическим именем массива ну никак. Поделитесь своим опытом люди добрые, кто сталкивался с задачей, и как решал.

//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart(){
string AN = "DinArrayName";
double AN [3][4];
ArrayInitialize(AN, 0);
}
//+------------------------------------------------------------------+

Журнал:
'TEST_DINAMIC_ARR_NAME.mq4' TEST_DINAMIC_ARR_NAME.mq4 1 1
'AN' - variable already defined TEST_DINAMIC_ARR_NAME.mq4 15 10
'ArrayInitialize' - no one of the overloads can be applied to the function call TEST_DINAMIC_ARR_NAME.mq4 16 3
2 error(s), 0 warning(s) 3 1

Последний раз редактировалось _SERG_; 31.07.2014 в 13:58.
_SERG_ вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 31.07.2014, 16:36   #2949 (permalink)
Интересующийся
 
Аватар для Rost
 
Регистрация: 16.06.2010
Сообщений: 13
Репутация: 4
Rost
Сказал(а) спасибо: 8
Поблагодарили 3 раз(а) в 2 сообщениях
Поинты: 12
Спасибо, ребята! Вы молодцы, быстро и доходчиво.
Rost вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 02.08.2014, 06:41   #2950 (permalink)
Интересующийся
 
Аватар для дима1234
 
Регистрация: 27.07.2014
Сообщений: 7
Репутация: 1
дима1234
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Поинты: 20

По умолчанию Прошу помощи в написании советника


Приветствую всех
Столкнулся вот с какой проблемой я скопировал с другого рабочего советника функцию задача которой контроль количества открытых ордеров там от куда я ее скопировал она работает а у меня нет вот эта функция
int CountTrades()
{
int count = 0;
for (int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
count++;
}
}

return(count);
}
и вызов функции
if (CountTrades() == 0)
я попытался выяснить почему и вот что у меня получилось
если установить ордерсенд между фигурными скобками
if (CountTrades() == 0)
{
TP = NormalizeDouble(Ask + TakeProfit * Point, Digits);
SL = NormalizeDouble(Ask - StopLoss * Point, Digits);
OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, SL, TP, NULL, Magic, 0, CLR_NONE);
}
функция работает как должна а именно если открытых ордеров нет то открывается ордер не важно какой я для примера взял на покупку и вот что получилось ордер открылся и закрылся согласно тейкпрофиту или стоплоссу и только потом открылся следующий ордер мне так и надо
если без фигурных скобак
if (CountTrades() == 0)
TP = NormalizeDouble(Ask + TakeProfit * Point, Digits);
SL = NormalizeDouble(Ask - StopLoss * Point, Digits);
OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, SL, TP, NULL, Magic, 0, CLR_NONE);
то тогда ордера открываются на каждом тике и не по одному а очень много я решил поставить скобки но когда я пишу условие дальше открываются сразу более 500 ордеров в промежутке 10 пунктов
есть какое то правило выставление фигурных скобак
дима1234 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 02.08.2014, 12:52   #2951 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,255
Репутация: 1963
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 349
Поблагодарили 1,892 раз(а) в 1,069 сообщениях
Поинты: 1276
Отправить сообщение для Ugar с помощью ICQ
Всё правильно. Если после условия нет фигурных скобок, то выполняется одно действие по условию.
if (CountTrades() == 0) Условие
TP = NormalizeDouble(Ask + TakeProfit * Point, Digits); Действие по условию
SL = NormalizeDouble(Ask - StopLoss * Point, Digits);Действие не зависит от условия
OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, SL, TP, NULL, Magic, 0, CLR_NONE);Действие не зависит от условия
Остальные действия выполняются в любом случае, не зависимо от условия.

Если нужно что бы по условию выполнялось несколько действий, тог все эти действия должны быть перечислены внутри фигурных скобок после условия.
if (CountTrades() == 0)Условие
{Все действия внутри скобок выполняются по условию
TP = NormalizeDouble(Ask + TakeProfit * Point, Digits);
SL = NormalizeDouble(Ask - StopLoss * Point, Digits);
OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, SL, TP, NULL, Magic, 0, CLR_NONE);
}

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!

Последний раз редактировалось Ugar; 02.08.2014 в 12:56.
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 03.08.2014, 11:22   #2952 (permalink)
Прохожий
 
Аватар для Алексей 983
 
Регистрация: 05.05.2014
Сообщений: 2
Репутация: 1
Алексей 983
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Поинты: 2
Здравствуйте. Пытаюсь разобраться с написанием сов по внешнему индикатору. Получилось,что сов ,когда гистограмма одного цвета-то открывает только sell. Когда цвет меняется- то только buy. Решил вместо гистограммы подставить любой стрелочный индикатор. Сов индикатор видит,только открывает сразу две сделки и buy и sell одновременно и чихать он хотел на сигналы инд. Подскажите пожалуйста что делать!
Алексей 983 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 03.08.2014, 16:00   #2953 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,255
Репутация: 1963
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 349
Поблагодарили 1,892 раз(а) в 1,069 сообщениях
Поинты: 1276
Отправить сообщение для Ugar с помощью ICQ
Сообщение от Алексей 983 Посмотреть сообщение
Здравствуйте. Пытаюсь разобраться с написанием сов по внешнему индикатору. Получилось,что сов ,когда гистограмма одного цвета-то открывает только sell. Когда цвет меняется- то только buy. Решил вместо гистограммы подставить любой стрелочный индикатор. Сов индикатор видит,только открывает сразу две сделки и buy и sell одновременно и чихать он хотел на сигналы инд. Подскажите пожалуйста что делать!
Программисты не гадалки. Как могут найти косяк в программе, которую не видят?

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 03.08.2014, 18:36   #2954 (permalink)
Прохожий
 
Аватар для Алексей 983
 
Регистрация: 05.05.2014
Сообщений: 2
Репутация: 1
Алексей 983
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Поинты: 2
Сообщение от Ugar Посмотреть сообщение
Программисты не гадалки. Как могут найти косяк в программе, которую не видят?
Прошу прощения! вот что у меня получилось.
Вложения:
Тип файла: mq4 Stalin.mq4 (2.6 Кб, 6 просмотров)
Тип файла: mq4 моё второе творение.mq4 (4.1 Кб, 5 просмотров)
Алексей 983 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 03.08.2014, 22:04   #2955 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от Ugar Посмотреть сообщение
Программисты не гадалки. Как могут найти косяк в программе, которую не видят?
Щяс увидят, все увидят...
В общем, несколько дней я уже бьюсь над кодом. И решения пока что не нашёл. Код написан на основе ООП. Но все классы проверены и работают. Проверял всё поочерёдно в процессе написания. Дошёл до очередного класса. Комментируя код класса, я нашёл метод, в котором по какой-то причине появляется ошибка 4059.

Сам код пробемного метода с комментариями вот:

Скрытый текст

PHP код:
// 1.1 Создаём список рабочих инструментов и заносим их в массив. =========================================================================
int MakeListOfInstruments::CreatWorkingSMBArray (stringfsa_WorkingSMB[],           // Возвращаемый массив рабочих инструментов
                                                 
string  fs_ListOfWorkingSMB,        // Список рабочих инструментов
                                                 
string  fs_BaseCurrency,            // Список базовых валют
                                                 
string  fs_BadCurrency,             // "Чёрный" список валют( их пропускаем )
                                                 
int     fi_MAXspread 0,           // Максимальный спред
                                                 
string  fs_Delimiter ",")         // Разделитель элементов в списках
{
   
ResetLastError();
   
int li_CntOfSMB 0;

   
//---- Формируем лист рабочих символов
   
if (fs_ListOfWorkingSMB == "")
   {
      
string lsa_AllSymbols[],      // Массив с общим количеством торговых инструментов( в зависимости от выбора источника )
             
lsa_ProperCUR[],       // Массив с подходящими торговыми инструментами
             
lsa_BadCUR[];          // Массив с НЕподходящими торговыми инструментами
      
int    li_CntProperCUR,       // Количество подходящих торговых инструментов
             
li_CntBadCUR,          // Количество НЕподходящих торговых инструментов
             
li_Cnt 0,            // Общее количество торговых инструментов котируемых ДЦ
             
li_CUR,                // Счётчик подходящих торговых инструментов
             
li_BAD;                // Счётчик НЕподходящих торговых инструментов
      
bool   lb_BAD;

      
//---- Формируем массив из списка базовых валют
      
li_CntProperCUR CArraysMan.MakeStrArrayFromLine (fs_BaseCurrencylsa_ProperCUR",");

      
//---- Формируем массив из "чёрного" списка валют
      
li_CntBadCUR CArraysMan.MakeStrArrayFromLine (fs_BadCurrencylsa_BadCUR",");

      
//---- Получаем перечень доступных символов в окне "Обзор рынка"
      
li_Cnt ListOfSMB (lsa_AllSymbolsTrue);

      
ArrayResize (fsa_WorkingSMBli_Cnt);

      if (
li_CntProperCUR == 0)
      {
         
li_CntProperCUR 1;
         
ArrayResize (lsa_ProperCUR1);
      }

      
CArraysMan.InitializeArraySTR (fsa_WorkingSMB"");
Print (
"_LastError_1 = "_LastError);
      
//---- Оставляем только те инструменты, в которых присутствуют "доминантные" валюты
      
for (int li_SMB 0li_SMB li_Cntli_SMB++)
      {
         Print (
"li_SMB = "li_SMB);
         Print (
"_LastError_2 = "_LastError);
         for (
li_CUR 0li_CUR li_CntProperCURli_CUR++)
         {
            
ResetLastError();
            Print (
"li_CUR = "li_CUR);
            Print (
"_LastError_3 = "_LastError);
            if (
StringFind (lsa_AllSymbols [li_SMB], lsa_ProperCUR [li_CUR]) >= || fs_BaseCurrency == "")
            {
               Print (
"_LastError_6 = "_LastError);
               if (
li_CntBadCUR 0)
               {
//                //---- Фильтруем инструменты через "чёрный" список
                  
lb_BAD false;
                   
                  for (
li_BAD 0li_BAD li_CntBadCURli_BAD++)
                  {
                     if (
StringFind (lsa_AllSymbols [li_SMB], lsa_BadCUR [li_BAD]) >= 0)
                     {
                        
lb_BAD true; break;
                     }
                  }
                  
                  if (
lb_BAD) break;
               }
//               Print ("_LastError_7 = ", _LastError);
               //---- Отбрасываем инструменты с "большим" спредом
               
if (MaxSpread 0)
               {
                  if (  
MarketInfo (lsa_AllSymbols [li_SMB], MODE_SPREAD) > MaxSpread)
                  break;
               }
               
fsa_WorkingSMB [li_CntOfSMB] = lsa_AllSymbols [li_SMB];
               
li_CntOfSMB++;
               break;
            }
         }
      }
      Print (
"_LastError_4 = "_LastError);
      
ArrayResize (fsa_WorkingSMBli_CntOfSMB);
   }
   else
   {
      
li_CntOfSMB CArraysMan.MakeStrArrayFromLine (fs_ListOfWorkingSMBfsa_WorkingSMB",");
      
//---- Проверяем на котируемость у ДЦ введённых символов
      
li_CntOfSMB CheckPresenceSMBInMarket (fsa_WorkingSMB);
   }
   
//---- Контролируем возможные ошибки
   
CLogging.Printing (StringConcatenate ("CreatWorkingSMBArray() => "CErrs.ErrorToString (_LastError)));
//----
   
return (li_CntOfSMB);

[свернуть]


В логе вижу такую картину:

Скрытый текст

PHP код:
23:37:59 Expert BaseTemplate EURUSD,H1loaded successfully
23
:37:59 TestGeneratorcurrent spread 105 used
23
:37:59 BaseTemplate inputsid_Lots=0.1id_SL=0id_TP=10ii_Slippage=2ib_Bootstrap=0ib_RealTrade=1ib_VirtualTrade=1ib_NeedLogs=1ib_PrintUP=1ib_CommentUP=1ii_MaxSpread=50ii_NumberOfTry=10ib_LotMoreMaxLot=0
23:37:59 2014.06.24 00:00  BaseTemplate EURUSD,H1_LastError_1 0
23
:37:59 2014.06.24 00:00  BaseTemplate EURUSD,H1li_SMB 0
23
:37:59 2014.06.24 00:00  BaseTemplate EURUSD,H1_LastError_2 0
23
:37:59 2014.06.24 00:00  BaseTemplate EURUSD,H1li_CUR 0
23
:37:59 2014.06.24 00:00  BaseTemplate EURUSD,H1_LastError_3 0
23
:37:59 2014.06.24 00:00  BaseTemplate EURUSD,H1_LastError_6 0
23
:37:59 2014.06.24 00:00  BaseTemplate EURUSD,H1li_SMB 1
23
:37:59 2014.06.24 00:00  BaseTemplate EURUSD,H1_LastError_2 4059
23
:37:59 2014.06.24 00:00  BaseTemplate EURUSD,H1li_CUR 0
23
:37:59 2014.06.24 00:00  BaseTemplate EURUSD,H1_LastError_3 0
23
:37:59 2014.06.24 00:00  BaseTemplate EURUSD,H1_LastError_6 0
23
:37:59 2014.06.24 00:00  BaseTemplate EURUSD,H1li_SMB 2
23
:37:59 2014.06.24 00:00  BaseTemplate EURUSD,H1_LastError_2 4059
23
:37:59 2014.06.24 00:00  BaseTemplate EURUSD,H1li_CUR 0
...
...
... 
[свернуть]


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


Глобальные input-переменные, которые получает данная функция

Скрытый текст

CreatWorkingSMBArray вот:
PHP код:
input string     _Make_List_Of_Symbols =     " ______________ Make List Of Symbols _____________ ";
input string     is_ListOfWorkingSMB "";           // Список рабочих инструментов
input string     is_ListOfMagic "3333021";         // Список используемых экспертом магиков
input string     is_BaseCurrencyList "USD,EUR,JPY,CHF,GBP,CAD,AUD";      // Список базовых валют
input string     is_BadCurrencyList "NZD";         // "Чёрный" список валют ( их пропускаем )
input int        ii_MaxSpread 50;                  // Максимальный спред, при котором эксперту разрешено торговать! 
[свернуть]



А вот 2 функции InitializeArraySTR и MakeStrArrayFromLine, которые в ней используются:

Скрытый текст

PHP код:
// 1.4 Возвращает массив STRING из строки, разделённой fs_Delimiter. ========================================================================
int MakeStrArrayFromLine (string  fs_List,              // строка с данными
                          
stringfsa_OUT[],            // возвращаемый массив
                          
string  fs_Delimiter ",")   // разделитель данных в строке
{
   
string tmp_Str "",
          
tmp_Char "";
//----
   
ArrayResize (fsa_OUT0);
    
   for (
int i 0StringLen (fs_List); i++)
   {
      
tmp_Char StringSubstr (fs_Listi1);
    
      if (
tmp_Char == fs_Delimiter)
      {
         if (
StringTrimLeft (StringTrimRight (tmp_Str)) != "")
         {
            
ArrayResize (fsa_OUTArraySize (fsa_OUT) + 1);
            
fsa_OUT [ArraySize (fsa_OUT) - 1] = tmp_Str;
         }
         
tmp_Str "";
      }
      else
      {
         if (
tmp_Char != " "tmp_Str tmp_Str tmp_Char;
      }
   }
    
   if (
StringTrimLeft (StringTrimRight (tmp_Str)) != "")
   {
      
ArrayResize (fsa_OUTArraySize (fsa_OUT) + 1);
      
fsa_OUT [ArraySize (fsa_OUT) - 1] = tmp_Str;
   }
//----
   
return (ArraySize (fsa_OUT));
}
// 1.3 Инициализируем массив STRING по заданному VALUE. ===================================================================================
void InitializeArraySTR (stringfsa_Array[],     // Инициализируемый массив
                         
string  fs_Value "")   // Значение, которым будем инициализировать массив fsa_Array
{
   for (
int li_Int 0li_Int ArraySize (fsa_Array); li_Int++)
   {
      
fsa_Array [li_Int] = fs_Value;
   }

[свернуть]


Что тут не так? Причём в этом моменте кода ошибка 4059 и вообще объекты? Судя по принтам касательно работы метода ошибок быть не должно...

В тестовом режиме так, а если накинуть на график. Скажем так на демо, то вижу другую ошибку:
PHP код:
00:16:03 BaseTemplate EURUSD,M1Logging => CreatWorkingSMBArray() => Ошибка № 0 :: Ошибка при работе с объектом 
С каким объектом там не удаётся работать ума не приложу Ведь количество то инструментов получается верно! Да и в тестере тоже самое..
Вложения:
Тип файла: mqh MakeListOfInstruments.mqh (15.2 Кб, 3 просмотров)

Последний раз редактировалось NSerega; 04.08.2014 в 10:35.
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 05.08.2014, 11:42   #2956 (permalink)
Почётный гражданин
 
Аватар для Vik940
 
Регистрация: 26.05.2012
Сообщений: 137
Репутация: 333
Vik940 Vik940 Vik940 Vik940
Сказал(а) спасибо: 489
Поблагодарили 332 раз(а) в 115 сообщениях
Поинты: 90
Уважаемые форумчане помогите найти индикатор в подвале с открытым кодом, нужен для вставки в сов.но надо закрепить мин и макс (0 и 100) или может кто подскажет как в советнике это сделать прописать
Код:
double Indi3=iCustom(Symbol(),0,"2",0,1);
double Indi4=iCustom(Symbol(),0,"2",1,1);
if(Indi3<= 45)Sig=1; //  - открываемся в бай
if(Indi4 >=55)Sig=2; //  - открываемся в селл
Миниатюры:
Нажмите на изображение для увеличения
Название: EURUSDH1.png
Просмотров: 29
Размер:	25.8 Кб
ID:	174203  
Вложения:
Тип файла: ex4 2.ex4 (11.9 Кб, 7 просмотров)
Vik940 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 05.08.2014, 12:49   #2957 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,255
Репутация: 1963
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 349
Поблагодарили 1,892 раз(а) в 1,069 сообщениях
Поинты: 1276
Отправить сообщение для Ugar с помощью ICQ
Сообщение от Vik940 Посмотреть сообщение
Уважаемые форумчане помогите найти индикатор в подвале с открытым кодом, нужен для вставки в сов.но надо закрепить мин и макс (0 и 100) или может кто подскажет как в советнике это сделать прописать
Код:
double Indi3=iCustom(Symbol(),0,"2",0,1);
double Indi4=iCustom(Symbol(),0,"2",1,1);
if(Indi3<= 45)Sig=1; //  - открываемся в бай
if(Indi4 >=55)Sig=2; //  - открываемся в селл
Ну так приведён же код. Нет никаких подвалов и закрепление уровней при вызове из советника. Это относится только к отображению. В советнике получается значение буферов на барах.
Только вот у этого индикатора 3 буфера, а не 2.
Нужно сначала определиться что должен показывать индикатор для сигналов.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Vik940 (06.08.2014)
Старый 06.08.2014, 05:02   #2958 (permalink)
Почётный гражданин
 
Аватар для Vik940
 
Регистрация: 26.05.2012
Сообщений: 137
Репутация: 333
Vik940 Vik940 Vik940 Vik940
Сказал(а) спасибо: 489
Поблагодарили 332 раз(а) в 115 сообщениях
Поинты: 90
Сообщение от Ugar Посмотреть сообщение
Ну так приведён же код. Нет никаких подвалов и закрепление уровней при вызове из советника. Это относится только к отображению. В советнике получается значение буферов на барах.
Только вот у этого индикатора 3 буфера, а не 2.
Нужно сначала определиться что должен показывать индикатор для сигналов.
Спасибо, понял переправил теперь открывает строго по сигналу
Код:
double Indi3=iCustom(Symbol(),0,"2",1,1);
double Indi4=iCustom(Symbol(),0,"2",2,1);
if(Indi3!=EMPTY_VALUE)Sig=1; //  - открываемся в бай
if(Indi4!=EMPTY_VALUE)Sig=2; //  - открываемся в селл
но появился еще вопрос как прописать чтобы позиции в Buy открывались только когда точка входа расположена ниже скажем 30, а в Sell выше 70.
Vik940 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 06.08.2014, 06:05   #2959 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,255
Репутация: 1963
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 349
Поблагодарили 1,892 раз(а) в 1,069 сообщениях
Поинты: 1276
Отправить сообщение для Ugar с помощью ICQ
Сообщение от Vik940 Посмотреть сообщение
Спасибо, понял переправил теперь открывает строго по сигналу
Код:
double Indi3=iCustom(Symbol(),0,"2",1,1);
double Indi4=iCustom(Symbol(),0,"2",2,1);
if(Indi3!=EMPTY_VALUE)Sig=1; //  - открываемся в бай
if(Indi4!=EMPTY_VALUE)Sig=2; //  - открываемся в селл
но появился еще вопрос как прописать чтобы позиции в Buy открывались только когда точка входа расположена ниже скажем 30, а в Sell выше 70.
Если под точкой входа имеется ввиду 1 и 2 буферы, то будет
if(Indi3!=EMPTY_VALUE && Indi3<30)Sig=1; // - открываемся в бай
if(Indi4!=EMPTY_VALUE && Indi4>70)Sig=2; // - открываемся в селл

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
Vik940 (06.08.2014), Александр_Стручков (06.08.2014)
Старый 06.08.2014, 11:28   #2960 (permalink)
◅ ♛ ♠ ♣ ♥ ♦ ♛ ▻
 
Аватар для tommy27
 
Регистрация: 16.10.2011
Адрес: Новосибирск
Сообщений: 1,054
Репутация: 3189
tommy27 tommy27 tommy27 tommy27 tommy27 tommy27 tommy27 tommy27 tommy27 tommy27 tommy27
Сказал(а) спасибо: 2,326
Поблагодарили 3,184 раз(а) в 875 сообщениях
Поинты: 570
Отправить сообщение для tommy27 с помощью Skype™

По умолчанию Функция WebRequest


Кто нибудь уже пользовался функцией WebRequest ?

Скрытый текст

MQL4: Добавлена функция WebRequest для работы с HTTP-запросами, благодаря которой MQL4-программы теперь могут взаимодействовать с различными сайтами и веб-службами.

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

Функция WebRequest() получает и отправляет информацию с веб-сайтов с помощью GET и POST-запросов. Чтобы разрешить MQL4-программе осуществлять такие запросы, необходимо включить опцию "Разрешить WebRequest для следующих URL" в настройках терминала и явным образом вручную прописать URL-адреса доверенных сайтов.
[свернуть]


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

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
puretrade.ru
tommy27 вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Юла (07.08.2014)
Ответ

Метки
mql4, mql4 помощь, вопросы mql4


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 16:23. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.
SEO by vBSEO