Ответ
 
Опции темы
Старый 21.01.2014, 21:18   #2401 (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
Сообщение от Milord Посмотреть сообщение
я верно понимаю, чтобы кусок кода выполнялся один раз, только при запуске советника, его надо засунуть в init()???так да?
есть ли функциональные ограничения этого(любого) куска кода при работе в init()???
Нет, не правильно. Функция init() и всё её содержимое выполняется не только при запуске программы. Всё есть в справочнике.
_http://docs.mql4.com/ru/runtime/start

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Milord (22.01.2014)
Старый 21.01.2014, 21:42   #2402 (permalink)
 
Аватар для mobidik
 
Регистрация: 09.08.2012
Адрес: Ua_Khm
Сообщений: 1,653
Репутация: 8561
mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik
Сказал(а) спасибо: 634
Поблагодарили 8,557 раз(а) в 1,567 сообщениях
Поинты: 802
Сообщение от _SERG_ Посмотреть сообщение
Это вопрос не для профи, это вопрос, для тех, кто изучает, или только начинает изучать язык.
Всё тоже что и в старте, но один раз. Например подготовка данных которые будут использоваться в функции старт. Ну а деинит, понятно, что может отвечать за сохранение данных, после окончания работы советника, скрипта или индикатора.
Это идеологическая нагрузка.
Вот я, как раз из тех, кто только изучает.

Тогда проясните такую ситуацию: график ренко не построится советником в выходной день, это знают все, т.к. нет тиков, типа того ):, если накинуть на график скрипт, например: SimulateTick, график будет построен совой. Ниже привожу код скрипта, где для его запуска нужен тик.
Вопрос 1: откуда тик?
А тик есть, т.к. если отключить терминал от сети, то и скрипт не поможет. Т.е., что б отработала сова, ей нужен тик, который формирует скрипт, в свою очередь, скрипту нужно подключение к сети.
Вопрос 2: как заставить его, скрипт SimulateTick, работать без подключения к сети?

PHP код:
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"

#include <WinUser32.mqh>
#import "user32.dll"
   
int RegisterWindowMessageA(string a0);
#import

int start() {
   
int Li_0 RegisterWindowMessageA("MetaTrader4_Internal_Message");
   
int Li_4 WindowHandle(Symbol(), Period());
   
PostMessageA(Li_4Li_021);
   return (
0);

mobidik на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 21.01.2014, 22:01   #2403 (permalink)
Активный участник
 
Аватар для _SERG_
 
Регистрация: 21.07.2009
Сообщений: 242
Репутация: 75
_SERG_
Сказал(а) спасибо: 7
Поблагодарили 75 раз(а) в 61 сообщениях
Поинты: 284
Сообщение от mobidik Посмотреть сообщение
Вот я, как раз из тех, кто только изучает.

Тогда проясните такую ситуацию: график ренко не построится советником в выходной день, это знают все, т.к. нет тиков, типа того ):, если накинуть на график скрипт, например: SimulateTick, график будет построен совой. Ниже привожу код скрипта, где для его запуска нужен тик.
Вопрос 1: откуда тик?
А тик есть, т.к. если отключить терминал от сети, то и скрипт не поможет. Т.е., что б отработала сова, ей нужен тик, который формирует скрипт, в свою очередь, скрипту нужно подключение к сети.
Вопрос 2: как заставить его, скрипт SimulateTick, работать без подключения к сети?


PHP код:
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"

#include <WinUser32.mqh>
#import "user32.dll"
   
int RegisterWindowMessageA(string a0);
#import

int start() {

   
int Li_0 RegisterWindowMessageA("MetaTrader4_Internal_Message");
   
int Li_4 WindowHandle(Symbol(), Period());
   
PostMessageA(Li_4Li_021);
   return (
0);

Я столкнулся с "тиковой проблемой" когда надо было обработаль разные инструменты. Решил её, зацикливанием.

По поводу пояснений, по моему очевидно, что без котировок, не построиться график.

Цитата:
PHP код:
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"
#include <WinUser32.mqh>
#import "user32.dll"
   
int RegisterWindowMessageA(string a0);
#import

int start() {
while(
TRUE){
   
int Li_0 =      RegisterWindowMessageA("MetaTrader4_Internal_Message");
    
int Li_4 WindowHandle(Symbol(), Period());
   
PostMessageA(Li_4Li_021);
   
Sleep(1000);
  }

_SERG_ на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 21.01.2014, 22:02   #2404 (permalink)
Активный участник
 
Аватар для _SERG_
 
Регистрация: 21.07.2009
Сообщений: 242
Репутация: 75
_SERG_
Сказал(а) спасибо: 7
Поблагодарили 75 раз(а) в 61 сообщениях
Поинты: 284
Сообщение от mobidik Посмотреть сообщение
Вот я, как раз из тех, кто только изучает.

Тогда проясните такую ситуацию: график ренко не построится советником в выходной день, это знают все, т.к. нет тиков, типа того ):, если накинуть на график скрипт, например: SimulateTick, график будет построен совой. Ниже привожу код скрипта, где для его запуска нужен тик.
Вопрос 1: откуда тик?
А тик есть, т.к. если отключить терминал от сети, то и скрипт не поможет. Т.е., что б отработала сова, ей нужен тик, который формирует скрипт, в свою очередь, скрипту нужно подключение к сети.
Вопрос 2: как заставить его, скрипт SimulateTick, работать без подключения к сети?

PHP код:
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"

#include <WinUser32.mqh>
#import "user32.dll"
   
int RegisterWindowMessageA(string a0);
#import

int start() {
   
int Li_0 RegisterWindowMessageA("MetaTrader4_Internal_Message");
   
int Li_4 WindowHandle(Symbol(), Period());
   
PostMessageA(Li_4Li_021);
   return (
0);

Я пользуюсь зацикленным скриптом.

#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net/"
#include <WinUser32.mqh>
#import "user32.dll"
int RegisterWindowMessageA(string a0);
#import

int start() {
while(TRUE){
int Li_0 = RegisterWindowMessageA("MetaTrader4_Internal_Messa ge");
int Li_4 = WindowHandle(Symbol(), Period());
PostMessageA(Li_4, Li_0, 2, 1);
Sleep(1000);
}
}

Тогда второй вопрос сам отпадает.
_SERG_ на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
mobidik (21.01.2014)
Старый 21.01.2014, 22:06   #2405 (permalink)
Активный участник
 
Аватар для _SERG_
 
Регистрация: 21.07.2009
Сообщений: 242
Репутация: 75
_SERG_
Сказал(а) спасибо: 7
Поблагодарили 75 раз(а) в 61 сообщениях
Поинты: 284
Сообщение от Ugar Посмотреть сообщение
Нет, не правильно. Функция init() и всё её содержимое выполняется не только при запуске программы. Всё есть в справочнике.
_http://docs.mql4.com/ru/runtime/start
А у меня init() и deinit() выполняются один раз.
Я про скрипты советники и индикаторы.
_SERG_ на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 22.01.2014, 05:27   #2406 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от Milord Посмотреть сообщение
я верно понимаю, чтобы кусок кода выполнялся один раз, только при запуске советника, его надо засунуть в init()???так да?
есть ли функциональные ограничения этого(любого) куска кода при работе в init()???
Для скриптов и советников я не припоминаю каких-то ограничений для кода в init().
В индикаторах при выполнении init() текущей информации может еще не быть совсем, ни аска, ни бида, ноль баров и т.п.
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Milord (22.01.2014)
Старый 22.01.2014, 06:17   #2407 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,525
Репутация: 3646
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,114
Поблагодарили 3,650 раз(а) в 1,470 сообщениях
Поинты: 2007
Сообщение от ansol Посмотреть сообщение
Задание размера массива до его использования - это и есть забота о распределении памяти! Она не тебя беспокоит - просто беспокойство разработчики свалили на тебя, вот и все.

Программмку будем обсуждать, что я выложил или "ну ее к чертям"?
Я тебе о том и говорил и повторю. Меня вопрос распределения памяти НЕ беспокоит. 8 гигов памяти забить задачкой МТ невозможно.

Сообщение от ansol Посмотреть сообщение
Ладно, чё-то по теме все замолчали.
Хорош оффтопить про форекс!
Изучаем массивы в mql4(свое мнение про них я уже высказал).
Переходим к делу:

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

PHP код:
//+------------------------------------------------------------------+
//|                                                          111.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red
//--- input parameters
extern int       ExtParam1=1;
//--- buffers
double ExtMapBuffer1[];
double f[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   
SetIndexStyle(0,DRAW_LINE);
   
SetIndexBuffer(0,ExtMapBuffer1);
//----
   
return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   
return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   
int    counted_bars=IndicatorCounted();
//----
   
ExtMapBuffer1[5]=2.7182;
   
f[5]=2.7182;
   
Comment(ExtMapBuffer1[5]," ",f[5]);
//----
   
return(0);
  }
//+------------------------------------------------------------------+ 
[свернуть]
Индюк создан с помощью стандартной процедуры MT4 - правой мышкой щелк на "пользовательские индикаторы" - в меню выбираем "создать"
1 внешний параметр, 1 буфер. Текст перед вами.
Результат у меня в МТ4 билд 509, скачан с оффсайта FXOpen (не реклама, просто так получилось, что я к ним в конкурс залез по приколу, он счас идет, здесь же на сайте организован)
Результат на картинке. Ну-с, не уроды?
Твоя задача решается в пол-пинка.

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

Код:
#property copyright "Copyright 2013, Viktorov"
#property link      "v4forex@qip.ru"

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 DarkGreen

      double   _Point;

double Buff_1[];
double Buff_2[];
int init() //********Custom indicator initialization function********|
{
   IndicatorBuffers(2);
   IndicatorShortName("indTest");
   SetIndexStyle(0, DRAW_ARROW);
   SetIndexBuffer(0, Buff_1);
   SetIndexBuffer(1, Buff_2);
   SetIndexArrow(0, 158);
   IndicatorDigits(Digits);
   _Point = Point;
   if(Digits % 2 == 1) _Point *=10;
   return(0);
}//******************************************************************|

//*******************************************************************|
//|             Custom indicator iteration function                  |
//*******************************************************************|
int start()
  {
//----IndicatorCounted()
   int i, limit = Bars - IndicatorCounted()-1;
    Buff_1[5] = 2.7182;
     Buff_2[5] = 2.7182;
    Comment("Buff_1[5] = ", Buff_1[5]
          , "\nBuff_2[5] = ", Buff_2[5]);
   return(0);
}//******************************************************************|

int deinit() //******Custom indicator deinitialization function******|
{
   return(0);
}//******************************************************************|
[свернуть]
Миниатюры:
Нажмите на изображение для увеличения
Название: 00.png
Просмотров: 8
Размер:	37.4 Кб
ID:	149122  

Последний раз редактировалось AlexeyVik; 22.01.2014 в 06:29.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 22.01.2014, 06:47   #2408 (permalink)
Новичок форума
 
Аватар для mak_kam
 
Регистрация: 03.02.2013
Сообщений: 21
Репутация: 16
mak_kam
Сказал(а) спасибо: 270
Поблагодарили 15 раз(а) в 10 сообщениях
Поинты: 18
Здравствуйте, Уважаемые! Помогите начинающему...
Подскажите как реализовать в коде чтобы при срабатывании отложенного ордера предыдущий рыночный однонаправленный ордер с таким же магиком закрывался?

Последний раз редактировалось mak_kam; 22.01.2014 в 06:55.
mak_kam вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 22.01.2014, 07:13   #2409 (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
Сообщение от _SERG_ Посмотреть сообщение
А у меня init() и deinit() выполняются один раз.
Я про скрипты советники и индикаторы.
А у меня терминал МТ4, видать у Вас какой то другой.
В МТ4:
Функций init() и deinit() нет в скриптах.
В советниках и индикаторах init() выполняется:
1. Сразу же после присоединения к графику программы
2. сразу после старта клиентского терминала
3. после смены финансового инструмента
4. после смены периода графика
5. после перекомпиляции программы в редакторе MetaEditor
6. после смены входных параметров из окна настройки эксперта или пользовательского индикатора
7. Советник также инициализируется после смены счёта

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Milord (22.01.2014)
Старый 22.01.2014, 07:27   #2410 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,525
Репутация: 3646
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,114
Поблагодарили 3,650 раз(а) в 1,470 сообщениях
Поинты: 2007
Андрей, я встречал одного умника который вписал в deinit() некоторые вычисления и периодически из start() вызывал deinit()
Так-что ты зря удивляешься многократному выполнению функций которые у нормальных выполняются один раз.

Всё что ты перечислил это причины перезапуска программы и соответственно сначала выполняется deinit(), программа закрыта. Потом программа запускается и выполняется init() опять-же однократно.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Milord (22.01.2014)
Старый 22.01.2014, 07:35   #2411 (permalink)
Интересующийся
 
Аватар для Albertid11
 
Регистрация: 23.01.2013
Сообщений: 17
Репутация: 3
Albertid11
Сказал(а) спасибо: 0
Поблагодарили 2 раз(а) в 2 сообщениях
Поинты: 18
Всем здрасте, есть индюк , строит прям точные уровни по фракталам, но ужасно тормозит при смене тф или когда запихиваешь его на график, может ли кто нибудь исправить код что ли чтобы не тормозил он?

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

//+------------------------------------------------------------------+
//| |
//| Индикатор для автоматического построения уровней |
//| PPZ по трём фракталам |
//| _http://www.mql4.com/ru/users/Dserg |
//+------------------------------------------------------------------+
#property copyright "Dserg, 2010"
#property link "_http://www.mql4.com/ru/users/Dserg"

//---- indicator settings
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 DeepSkyBlue
#property indicator_color2 HotPink
#property indicator_color3 Gold
#property indicator_color4 Tomato

//---- buffers
double B0[];
double B1[];
double B2[];
double B3[];

double Fr0[1000];
int Ind0[1000];

//Ширина окна, в котором ищутся уровни
extern int timeFrame = 0;
extern int Nbars = 150;
//Смещение правого бара для окна
extern int Nfirst = 0;
//Минимальное расстояние между уровнями в пунктах
extern double minDiff = 300.0;
//Минимальное расстояние между фракталами в барах
extern int minBars = 5;

static bool calculated;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- 3additional buffers are used for counting.

//---- drawing settings

SetIndexStyle(0,DRAW_ARROW,0,4);
SetIndexBuffer(0, B0);
SetIndexArrow(0, 119);
SetIndexStyle(1,DRAW_ARROW,0,4);
SetIndexBuffer(1, B1);
SetIndexArrow(1, 119);
SetIndexStyle(2,DRAW_ARROW,0,4);
SetIndexBuffer(2, B2);
SetIndexArrow(2, 119);
SetIndexStyle(3,DRAW_ARROW,0,4);
SetIndexBuffer(3, B3);
SetIndexArrow(3, 119);

SetIndexEmptyValue(0,0.0);
SetIndexEmptyValue(1,0.0);
SetIndexEmptyValue(2,0.0);
SetIndexEmptyValue(3,0.0);

SetIndexLabel(0,"PPZ 0");
SetIndexLabel(1,"PPZ 1");
SetIndexLabel(2,"PPZ 2");
SetIndexLabel(3,"PPZ 3");

calculated = false;
return(0);
}

int deinit()
{
ObjectDelete("PPZ");
ObjectDelete("PPZ1");
ObjectDelete("PPZ2");
ObjectDelete("PPZ3");
ObjectDelete("V1");
ObjectDelete("V2");
Comment("");
return(0);
}

int start()

{
if (calculated) return(0);
if (Nbars>500) {
Comment("Too much bars to calulate, try < 500");
return(0);
}

int counted_bars = IndicatorCounted();

if (counted_bars < 0) return(-1);
if (counted_bars >= Bars) return(0);

Comment("Calculating PPZ..");
datetime t0 = TimeLocal();

int loopbegin = Nbars+Nfirst;

int i,j,k,l,imin,jmin,kmin,lmin,imin1,jmin1,kmin1,lmin1,imin2,jmin2,kmin2,lmin2,imin3,jmin3,kmin3,lmin3;
double f0,f1,f2,f3,p0,s0,pmin,smin,pmin1,smin1,pmin2,smin2,pmin3,smin3;
int Nmax;
pmin = 10.0;
smin = 10000.0;
pmin1 = 20.0;
smin1 = 20000.0;
pmin2 = 30.0;
smin2 = 30000.0;
pmin3 = 40.0;
smin3 = 40000.0;

//Ищем фракталы, складываем в массив
j=0;
for(i = loopbegin; i > Nfirst; i--) {
f0 = -1.0;
f0 = iFractals(NULL,timeFrame,MODE_UPPER,i);
if (f0<=0.0 ) f0 = iFractals(NULL,timeFrame,MODE_LOWER,i);
if (f0>0.0) {
Fr0[j]=f0;
Ind0[j]=i;
j++;
}
}
Nmax = j;



//ищем первую линию PPZ по 4-м фракталам
for(i = 0; i < Nmax; i++) {
f0 = Fr0[i];
for(j = 0; j < Nmax; j++) {
f1=Fr0[j];
if (i!=j && MathAbs(Ind0[i]-Ind0[j])>minBars) {
for(k = 0; k < Nmax; k++) {
f2 = Fr0[k];
if (k!=i && k!=j && MathAbs(Ind0[i]-Ind0[k])>minBars && MathAbs(Ind0[k]-Ind0[j])>minBars) {
for(l = 0; l < Nmax; l++) {
f3 = Fr0[l];
if ( l!=i && l!=j && l!=k && MathAbs(Ind0[i]-Ind0[l])>minBars && MathAbs(Ind0[j]-Ind0[l])>minBars && MathAbs(Ind0[k]-Ind0[l])>minBars) {
p0 = (f0+f1+f2+f3)/4.0;
s0 = (f0-p0)*(f0-p0)+(f1-p0)*(f1-p0)+(f2-p0)*(f2-p0)+(f2-p0)*(f2-p0);
if (s0<smin) {
smin=s0;
pmin=p0;
imin=i;
jmin=j;
kmin=k;
lmin=l;
}
}
}
}
}
}
}
}

//ищем вторую линию PPZ по 4-м фракталам
for(i = 0; i < Nmax; i++) {
f0 = Fr0[i];
if (i!=imin && i!=jmin && i!=kmin && i!=lmin) {
for(j = 0; j < Nmax; j++) {
f1=Fr0[j];
if (i!=j && MathAbs(Ind0[i]-Ind0[j])>minBars && j!=imin && j!=jmin && j!=kmin && j!=lmin) {
for(k = 0; k < Nmax; k++) {
f2 = Fr0[k];
if (k!=i && k!=j && MathAbs(Ind0[i]-Ind0[k])>minBars && MathAbs(Ind0[k]-Ind0[j])>minBars && k!=imin && k!=jmin && k!=kmin && k!=lmin) {
for(l = 0; l < Nmax; l++) {
f3 = Fr0[l];
if ( l!=i && l!=j && l!=k && MathAbs(Ind0[i]-Ind0[l])>minBars && MathAbs(Ind0[j]-Ind0[l])>minBars && MathAbs(Ind0[k]-Ind0[l])>minBars && l!=imin && l!=jmin && l!=kmin && l!=lmin) {
p0 = (f0+f1+f2+f3)/4.0;
s0 = (f0-p0)*(f0-p0)+(f1-p0)*(f1-p0)+(f2-p0)*(f2-p0)+(f2-p0)*(f2-p0);
if (s0<smin1 && MathAbs(p0-pmin)>minDiff*Point) {
smin1=s0;
pmin1=p0;
imin1=i;
jmin1=j;
kmin1=k;
lmin1=l;
}
}
}
}
}
}
}
}
}

//ищем третью линию PPZ по 4-м фракталам
for(i = 0; i < Nmax; i++) {
f0 = Fr0[i];
if (i!=imin && i!=jmin && i!=kmin && i!=lmin && i!=imin1 && i!=jmin1 && i!=kmin1 && i!=lmin1) {
for(j = 0; j < Nmax; j++) {
f1=Fr0[j];
if (i!=j && MathAbs(Ind0[i]-Ind0[j])>minBars && j!=imin && j!=jmin && j!=kmin && j!=lmin && j!=imin1 && j!=jmin1 && j!=kmin1 && j!=lmin1) {
for(k = 0; k < Nmax; k++) {
f2 = Fr0[k];
if (k!=i && k!=j && MathAbs(Ind0[i]-Ind0[k])>minBars && MathAbs(Ind0[k]-Ind0[j])>minBars && k!=imin && k!=jmin && k!=kmin && k!=lmin && k!=imin1 && k!=jmin1 && k!=kmin1 && k!=lmin1) {
for(l = 0; l < Nmax; l++) {
f3 = Fr0[l];
if ( l!=i && l!=j && l!=k && MathAbs(Ind0[i]-Ind0[l])>minBars && MathAbs(Ind0[j]-Ind0[l])>minBars && MathAbs(Ind0[k]-Ind0[l])>minBars && l!=imin && l!=jmin && l!=kmin && l!=lmin && l!=imin1 && l!=jmin1 && l!=kmin1 && l!=lmin1) {
p0 = (f0+f1+f2+f3)/4.0;
s0 = (f0-p0)*(f0-p0)+(f1-p0)*(f1-p0)+(f2-p0)*(f2-p0)+(f2-p0)*(f2-p0);
if (s0<smin2 && MathAbs(p0-pmin)>minDiff*Point && MathAbs(p0-pmin1)>minDiff*Point) {
smin2=s0;
pmin2=p0;
imin2=i;
jmin2=j;
kmin2=k;
lmin2=l;
}
}
}
}
}
}
}
}
}

//ищем четвёртую линию PPZ по 4-м фракталам
for(i = 0; i < Nmax; i++) {
f0 = Fr0[i];
if (i!=imin && i!=jmin && i!=kmin && i!=lmin && i!=imin1 && i!=jmin1 && i!=kmin1 && i!=lmin1 && i!=imin2 && i!=jmin2 && i!=kmin2 && i!=lmin2) {
for(j = 0; j < Nmax; j++) {
f1=Fr0[j];
if (i!=j && MathAbs(Ind0[i]-Ind0[j])>minBars && j!=imin && j!=jmin && j!=kmin && j!=lmin && j!=imin1 && j!=jmin1 && j!=kmin1 && j!=lmin1 && j!=imin2 && j!=jmin2 && j!=kmin2 && j!=lmin2) {
for(k = 0; k < Nmax; k++) {
f2 = Fr0[k];
if (k!=i && k!=j && MathAbs(Ind0[i]-Ind0[k])>minBars && MathAbs(Ind0[k]-Ind0[j])>minBars && k!=imin && k!=jmin && k!=kmin && k!=lmin && k!=imin1 && k!=jmin1 && k!=kmin1 && k!=lmin1 && k!=imin2 && k!=jmin2 && k!=kmin2 && k!=lmin2) {
for(l = 0; l < Nmax; l++) {
f3 = Fr0[l];
if ( l!=i && l!=j && l!=k && MathAbs(Ind0[i]-Ind0[l])>minBars && MathAbs(Ind0[j]-Ind0[l])>minBars && MathAbs(Ind0[k]-Ind0[l])>minBars && l!=imin && l!=jmin && l!=kmin && l!=lmin && l!=imin1 && l!=jmin1 && l!=kmin1 && l!=lmin1 && l!=imin2 && l!=jmin2 && l!=kmin2 && l!=lmin2) {
p0 = (f0+f1+f2+f3)/4.0;
s0 = (f0-p0)*(f0-p0)+(f1-p0)*(f1-p0)+(f2-p0)*(f2-p0)+(f2-p0)*(f2-p0);
if (s0<smin3 && MathAbs(p0-pmin)>minDiff*Point && MathAbs(p0-pmin1)>minDiff*Point && MathAbs(p0-pmin2)>minDiff*Point) {
smin3=s0;
pmin3=p0;
imin3=i;
jmin3=j;
kmin3=k;
lmin3=l;
}
}
}
}
}
}
}
}
}

//Рисуем результаты, отмечаем точки
B0[iBarShift(NULL,0,iTime(NULL,timeFrame,Ind0[imin]))] = Open[iBarShift(NULL,0,iTime(NULL,timeFrame,Ind0[imin]))];
B0[iBarShift(NULL,0,iTime(NULL,timeFrame,Ind0[jmin]))] = Open[iBarShift(NULL,0,iTime(NULL,timeFrame,Ind0[jmin]))];
B0[iBarShift(NULL,0,iTime(NULL,timeFrame,Ind0[kmin]))] = Open[iBarShift(NULL,0,iTime(NULL,timeFrame,Ind0[kmin]))];
B0[iBarShift(NULL,0,iTime(NULL,timeFrame,Ind0[lmin]))] = Open[iBarShift(NULL,0,iTime(NULL,timeFrame,Ind0[lmin]))];

B1[iBarShift(NULL,0,iTime(NULL,timeFrame,Ind0[imin1]))] = Open[iBarShift(NULL,0,iTime(NULL,timeFrame,Ind0[imin1]))];
B1[iBarShift(NULL,0,iTime(NULL,timeFrame,Ind0[jmin1]))] = Open[iBarShift(NULL,0,iTime(NULL,timeFrame,Ind0[jmin1]))];
B1[iBarShift(NULL,0,iTime(NULL,timeFrame,Ind0[kmin1]))] = Open[iBarShift(NULL,0,iTime(NULL,timeFrame,Ind0[kmin1]))];
B1[iBarShift(NULL,0,iTime(NULL,timeFrame,Ind0[lmin1]))] = Open[iBarShift(NULL,0,iTime(NULL,timeFrame,Ind0[lmin1]))];

B2[iBarShift(NULL,0,iTime(NULL,timeFrame,Ind0[imin2]))] = Open[iBarShift(NULL,0,iTime(NULL,timeFrame,Ind0[imin2]))];
B2[iBarShift(NULL,0,iTime(NULL,timeFrame,Ind0[jmin2]))] = Open[iBarShift(NULL,0,iTime(NULL,timeFrame,Ind0[jmin2]))];
B2[iBarShift(NULL,0,iTime(NULL,timeFrame,Ind0[kmin2]))] = Open[iBarShift(NULL,0,iTime(NULL,timeFrame,Ind0[kmin2]))];
B2[iBarShift(NULL,0,iTime(NULL,timeFrame,Ind0[lmin2]))] = Open[iBarShift(NULL,0,iTime(NULL,timeFrame,Ind0[lmin2]))];

B3[iBarShift(NULL,0,iTime(NULL,timeFrame,Ind0[imin3]))] = Open[iBarShift(NULL,0,iTime(NULL,timeFrame,Ind0[imin3]))];
B3[iBarShift(NULL,0,iTime(NULL,timeFrame,Ind0[jmin3]))] = Open[iBarShift(NULL,0,iTime(NULL,timeFrame,Ind0[jmin3]))];
B3[iBarShift(NULL,0,iTime(NULL,timeFrame,Ind0[kmin3]))] = Open[iBarShift(NULL,0,iTime(NULL,timeFrame,Ind0[kmin3]))];
B3[iBarShift(NULL,0,iTime(NULL,timeFrame,Ind0[lmin3]))] = Open[iBarShift(NULL,0,iTime(NULL,timeFrame,Ind0[lmin3]))];

if(!ObjectCreate("PPZ",OBJ_HLINE,0,Time[0],NormalizeDouble(pmin,Digits))) {
Comment("ERROR");
return(0);
}
if(!ObjectCreate("PPZ1",OBJ_HLINE,0,Time[0],NormalizeDouble(pmin1,Digits))) {
Comment("ERROR");
return(0);
}
if(!ObjectCreate("PPZ2",OBJ_HLINE,0,Time[0],NormalizeDouble(pmin2,Digits))) {
Comment("ERROR");
return(0);
}
if(!ObjectCreate("PPZ3",OBJ_HLINE,0,Time[0],NormalizeDouble(pmin3,Digits))) {
Comment("ERROR");
return(0);
}

if(!ObjectCreate("V1",OBJ_VLINE,0,iTime(NULL,timeFrame,Nbars+Nfirst),Open[0])) {
Comment("ERROR");
return(0);
}
if(!ObjectCreate("V2",OBJ_VLINE,0,iTime(NULL,timeFrame,Nfirst),Open[0])) {
Comment("ERROR");
return(0);
}
ObjectSet("PPZ",OBJPROP_COLOR,DeepSkyBlue);
ObjectSet("PPZ",OBJPROP_STYLE,STYLE_DASH);

ObjectSet("PPZ1",OBJPROP_COLOR,DeepPink);
ObjectSet("PPZ1",OBJPROP_STYLE,STYLE_DASH);

ObjectSet("PPZ2",OBJPROP_COLOR,Gold);
ObjectSet("PPZ2",OBJPROP_STYLE,STYLE_DASH);

ObjectSet("PPZ3",OBJPROP_COLOR,Tomato);
ObjectSet("PPZ3",OBJPROP_STYLE,STYLE_DASH);

ObjectSet("V1",OBJPROP_COLOR,DarkKhaki);
ObjectSet("V2",OBJPROP_COLOR,DarkKhaki);

calculated = true;
datetime t1 = TimeLocal()-t0;
Comment("Calculation of PPZ done \n PPZ0 " + DoubleToStr(pmin,5) + "\n PPZ1 " + DoubleToStr(pmin1,5) + "\n PPZ2 " + DoubleToStr(pmin2,5) + "\n PPZ3 " + DoubleToStr(pmin3,5) + "\n Time " + t1 + " sec.");
return(0);
}
//+------------------------------------------------------------------+

[свернуть]



блин буду благодарен, индюк стоящий, всем советую!

Последний раз редактировалось chocolate; 22.01.2014 в 09:20.
Albertid11 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 22.01.2014, 07:41   #2412 (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
Сообщение от AlexeyVik Посмотреть сообщение
Андрей, я встречал одного умника который вписал в deinit() некоторые вычисления и периодически из start() вызывал deinit()
Так-что ты зря удивляешься многократному выполнению функций которые у нормальных выполняются один раз.

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

У меня есть один не торгующий советник. Так в нём весь код зациклен внутри init().
A внутри start() только одна функция.

start()
{
init();
}

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
AlexeyVik (22.01.2014)
Старый 22.01.2014, 08:50   #2413 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,525
Репутация: 3646
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,114
Поблагодарили 3,650 раз(а) в 1,470 сообщениях
Поинты: 2007
Сообщение от ansol Посмотреть сообщение
Мне важно наличие самого объекта на графике, иначе я не знаю как работать в советнике с "воображаемой" линией.
На самом деле работать с воображаемой линией легко.
Берёшь координаты первой точки номер бара и цена, потом координаты второй точки, опять-же номер бара и цена.
Из этих координат получаешь катеты прямоугольного треугольника в шт.
№бара 1й точки минус №бара второй точки это длина горизонтального катета (А).
Цена во второй точке минус цена в первой точке, разницу разделить на Point это высота треугольника (В).
Потом вспомнить что такое тангенс (tan = В:А) и вычислив его поставить в формулу В1 = (А+n)*tan получаешь количество пунктов от цены в первой точке до точки на линии в определённое время (бар А+n).
Надеюсь дальше сам сообразишь.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 22.01.2014, 09:04   #2414 (permalink)
Новичок форума
 
Аватар для mak_kam
 
Регистрация: 03.02.2013
Сообщений: 21
Репутация: 16
mak_kam
Сказал(а) спасибо: 270
Поблагодарили 15 раз(а) в 10 сообщениях
Поинты: 18
Сообщение от mak_kam Посмотреть сообщение
Здравствуйте, Уважаемые! Помогите начинающему...
Подскажите как реализовать в коде чтобы при срабатывании отложенного ордера предыдущий рыночный однонаправленный ордер с таким же магиком закрывался?
Уважаемые подскажите хотя бы где копать пожалуйста!
mak_kam вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 22.01.2014, 09:06   #2415 (permalink)
Активный участник
 
Аватар для _SERG_
 
Регистрация: 21.07.2009
Сообщений: 242
Репутация: 75
_SERG_
Сказал(а) спасибо: 7
Поблагодарили 75 раз(а) в 61 сообщениях
Поинты: 284
Сообщение от Ugar Посмотреть сообщение
А у меня терминал МТ4, видать у Вас какой то другой.
В МТ4:
Функций init() и deinit() нет в скриптах.
В советниках и индикаторах init() выполняется:
1. Сразу же после присоединения к графику программы
2. сразу после старта клиентского терминала
3. после смены финансового инструмента
4. после смены периода графика
5. после перекомпиляции программы в редакторе MetaEditor
6. после смены входных параметров из окна настройки эксперта или пользовательского индикатора
7. Советник также инициализируется после смены счёта
Всё по честному, терминал МТ4 билд 509.
По поводу "Функций init() и deinit() нет в скриптах. ", если они не возникают в шаблоне при его открытии в метаэдиторе, допишите из руками, а дальше всё как обычно с этими функциями.
Понятно, что правила вызова функций распространяются и на т.н. "стандартные" функции, но даже при неоднократном вызове, как INIT() так и DEINIT() каждая из этих функций выполниться один раз при запуске и останове софта.
Просто с точки зрения организации кода проще использовать их по назначению.

Последний раз редактировалось _SERG_; 22.01.2014 в 09:19.
_SERG_ на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 22.01.2014, 09:36   #2416 (permalink)
Активный участник
 
Аватар для asers1111
 
Регистрация: 22.12.2011
Сообщений: 169
Репутация: 43
asers1111
Сказал(а) спасибо: 423
Поблагодарили 42 раз(а) в 15 сообщениях
Поинты: 184
Добрый день уважаемые мастера.Прежде всего СПАСИБО вам за всю предидущую помощь.Помогите,пожалуйста , с функцией.Есть у меня функция,которая позволяет определить,когда и какой был открыт предидущий ордер.
// функция возвращает true если отдер открыт менее bar баров, и false если более bar боров или ордера нет
// пример вызова OrderInBars( OP_BUY, 70, Magic )

bool OrderInBars( int order_type, int bar, int magic ) {
for (int i=OrdersTotal()-1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
if (OrderSymbol()==Symbol() && OrderMagicNumber()==magic)
{
if( iBarShift(NULL, timeframe, OrderOpenTime()) > bar )
return(false);

return(true);
}

return(false);
}

Я же хочу ,чтобы можно было найти и определить,сколько баров до предидущего СИГНАЛА индикатора.(Не важно открывался ордер по нему или нет и неважно Buy или Sell.)Вот функция определяющая сам сигнал индикатора:

//если на индиаторе StepMA_v9 сменился цвет - это сигнал, функция возвращает true
bool SIGNAL( int bar = 1 )
{
double V9Blue = iCustom(Symbol(),0,"StepMA_v9",TimeFrame,Pricce,Le ngth,StepSize,Multiplier,MinStep,Displace,ColorMod e,StepMAMode,alerts,AlertMode,SoundsNumber,SoundsP ause,UpSound,DnSound,EmailMode,EmailsNumber,1,bar) ;
double V9Blue1 = iCustom(Symbol(),0,"StepMA_v9",TimeFrame,Pricce,Le ngth,StepSize,Multiplier,MinStep,Displace,ColorMod e,StepMAMode,alerts,AlertMode,SoundsNumber,SoundsP ause,UpSound,DnSound,EmailMode,EmailsNumber,1,bar+ 2);

if(V9Blue != EMPTY_VALUE && V9Blue1 == EMPTY_VALUE || V9Blue == EMPTY_VALUE && V9Blue1 != EMPTY_VALUE)return(true);
return(false);
}

Помогите,пожалуйста мне с функцией ,которая позволит определить сколько баров до ПРЕДИДУЩЕГО СИГНАЛА(Не важно Buy или Sell).
Миниатюры:
Нажмите на изображение для увеличения
Название: Рисунок с графика.JPG
Просмотров: 12
Размер:	235.2 Кб
ID:	149154  
asers1111 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 22.01.2014, 09:46   #2417 (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
Сообщение от _SERG_ Посмотреть сообщение
Всё по честному, терминал МТ4 билд 509.
По поводу "Функций init() и deinit() нет в скриптах. ", если они не возникают в шаблоне при его открытии в метаэдиторе, допишите из руками, а дальше всё как обычно с этими функциями.
Возможно. Хотя, не вижу особой надобности init() и deinit() в скрипте.
Сообщение от _SERG_ Посмотреть сообщение
Понятно, что правила вызова функций распространяются и на т.н. "стандартные" функции, но даже при неоднократном вызове, как INIT() так и DEINIT() каждая из этих функций выполниться один раз при запуске и останове софта.
Просто с точки зрения организации кода проще использовать их по назначению.
Вот в таком коде, инициализация выполняется на каждом тике, а не только при запуске программы.
Вызов функции init() неоднократный и выполняется при каждом вызове.
int a;
int init()
{
a++;
Comment(a);
return(0);
}
int start()
{
init();
return(0);
}
Кроме того, как я привёл пример раньше. Сидит трейдер и щёлкает периоды графика каждые 5 секунд. Это переинициализирует советник и индикаторы. Если при написании программы не будет учтено такое поведение трейдера, то может привести к неправильной работе.
Я понял о чём речь. Спор не по существу, а по терминологии. Не стоит он продолжения.

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

Последний раз редактировалось Ugar; 22.01.2014 в 09:51.
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 22.01.2014, 10:00   #2418 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,010
Репутация: 829
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 843 раз(а) в 554 сообщениях
Поинты: 1310
Сообщение от AlexeyVik Посмотреть сообщение
На самом деле работать с воображаемой линией легко.
Берёшь координаты первой точки номер бара и цена, потом координаты второй точки, опять-же номер бара и цена.
Из этих координат получаешь катеты прямоугольного треугольника в шт.
№бара 1й точки минус №бара второй точки это длина горизонтального катета (А).
Цена во второй точке минус цена в первой точке, разницу разделить на Point это высота треугольника (В).
Потом вспомнить что такое тангенс (tan = В:А) и вычислив его поставить в формулу В1 = (А+n)*tan получаешь количество пунктов от цены в первой точке до точки на линии в определённое время (бар А+n).
Надеюсь дальше сам сообразишь.
Зачем такие сложности, когда есть встроенный иснтрумент? Для контроля сначала все равно придется рисовать, потом-то, конечно, необязательно, хотя лучше бы видеть, что должно произойти. Глянул и уже прикидываешь, как поступит советник, может, ему помочь надо?
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 22.01.2014, 10:09   #2419 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,525
Репутация: 3646
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,114
Поблагодарили 3,650 раз(а) в 1,470 сообщениях
Поинты: 2007
Сообщение от ansol Посмотреть сообщение
Зачем такие сложности, когда есть встроенный иснтрумент? Для контроля сначала все равно придется рисовать, потом-то, конечно, необязательно, хотя лучше бы видеть, что должно произойти. Глянул и уже прикидываешь, как поступит советник, может, ему помочь надо?
Встроенный инструмент невероятно тормозит работу в тестере. Да и не так уж это сложно. Не сложней построения объекта.
Да к тому-же это ответ на твой вопрос.

Последний раз редактировалось AlexeyVik; 22.01.2014 в 10:30.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 22.01.2014, 10:25   #2420 (permalink)
Активный участник
 
Аватар для _SERG_
 
Регистрация: 21.07.2009
Сообщений: 242
Репутация: 75
_SERG_
Сказал(а) спасибо: 7
Поблагодарили 75 раз(а) в 61 сообщениях
Поинты: 284
Сообщение от Ugar Посмотреть сообщение
Возможно. Хотя, не вижу особой надобности init() и deinit() в скрипте.

Вот в таком коде, инициализация выполняется на каждом тике, а не только при запуске программы.
Вызов функции init() неоднократный и выполняется при каждом вызове.
int a;
int init()
{
a++;
Comment(a);
return(0);
}
int start()
{
init();
return(0);
}
Кроме того, как я привёл пример раньше. Сидит трейдер и щёлкает периоды графика каждые 5 секунд. Это переинициализирует советник и индикаторы. Если при написании программы не будет учтено такое поведение трейдера, то может привести к неправильной работе.
Я понял о чём речь. Спор не по существу, а по терминологии. Не стоит он продолжения.
Да это и не спор, каждый пишет в меру своего навыка и понимания задачи, как уже было где то выше сказано.

По поводу общей работы советника и трэйдера, на одном графике, полностью согласен.
Такая схема напрягает и постоянно требуется пересчёта текущей ситуации.
Думаю что если уже сова на графике, то не надо туда лезть руками, иначе это пожизненно.
По вопросу "... вижу особой надобности init() и deinit() в скрипте.
" скажу, что при обработке тех же ордеров, в ините() подготавливаю данные для совы, в старте() с ними оперирую, в деините сохраняю, если трэёдер сделал, чего то, что вызывает "сброс" наработанных кодом данных, а потом в ините() при переинициализации совы с новыми параметрами, перечитываю и восстанавливаю их. Зачем? Чтобы было с чем сравнивать, ведб сова стоит не один день, а бары это форма представления цены, и по барам не всегда можно найти её значение, или другие нюансы, возникающие при торговле совой/скриптом.
Да и ещё, если обрабатывать 27 инструментов, кроме как в зацикленный скрипт, логику никуда больше не засунешь.
Не, можно копии размазать, не вопрос.

Последний раз редактировалось _SERG_; 22.01.2014 в 10:30.
_SERG_ на форуме   Ответить с цитированиемОтветить с цитированием  
Ответ

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


Опции темы

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

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



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


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