Перейти к содержанию

Обучение языку MQL4 под MetaTrader 4


Рекомендуемые сообщения

  • Ответов 6,8k
  • Создано
  • Последний ответ

Популярные авторы

Популярные авторы

Популярные посты

Смотрим видео-уроки, изучаем MQL:       Скачать видеокурс «MQL программирование. Как самому написать форекс советник/ индикатор/ скрипт»   P.S. Тема про Обучение MQ

Перейти

Циклы цикл for Иногда необходимо повторять одно и то же действие несколько раз подряд. Для этого используют циклы. К примеру, мы хотим проанализировать последние 10 баров и выяснить наименьшую цен

Перейти

Речь идет о том, что не будет значимых нововведений. А только баги периодически будут править. А вот все новое мол - в МТ5. Когда они вживую сказали то же самое на конференции в Москве, я уточнил: "То

Перейти
Обучение языку MQL4 под MetaTrader 4 Опубликовано

Для каждого паттерна/пары/таймфрейма отдельно. Я вроде бы в статье даже прикладывал диаграммы соотношений по парам для каждого тф каждого паттерна.

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Подскажите с одним моментом:

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

Пишу

Цитата

datetime Expiration = StrToTime("15:00");
OrderSend(NULL,OP_SELLSTOP,0.3,min_price-0.0006,3,SL,TP,"",123,Expiration,Green);



но это работает только первый день на истории в тестере, а в остальные просто не выставляется ордер.

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано


Подскажите с одним моментом:

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

Пишу

Цитата

datetime Expiration = StrToTime("15:00");
OrderSend(NULL,OP_SELLSTOP,0.3,min_price-0.0006,3,SL,TP,"",123,Expiration,Green);



В журнале какую ошибку пишет ?

но это работает только первый день на истории в тестере, а в остальные просто не выставляется ордер.

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Выдает ошибку 4051, т.е.
ERR_INVALID_FUNCTION_PARAMVALUE - Недопустимое значение параметра функции

только, что ему не нравится не пойму. Если экспирацию ставлю 0, то работает без проблем. Получается в ней дело.

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Догадка у меня такая - поскольку Вы не прописываете число в дату, то число берется текущее.
В результате если по времени ордер пытается установится после 15:00 текущего числа, мы получаем ситуацию, что дата истечения отложки, которую вы пытаетесь прописать уже прошла. Думаю по этому поводу и ругается.

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Есть два мт4 от одного брокера,установленные в разные папки.Задача передать значение переменой с терминала1,а с терминала2 ее считать и вывести алертом. Помогите?

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

//---Запись глобальной переменной
string name1="SL";
string name2="IN";
string name3="TP1";
string name4="TP2";
double value1=1.26224;
double value2=1.26092;
double value3=1.25960;
double value4=1.25828;
datetime dt1= GlobalVariableSet( name1,value1 );
datetime dt2= GlobalVariableSet( name2,value2 );
datetime dt3= GlobalVariableSet( name3,value3 );
datetime dt4= GlobalVariableSet( name4,value4 );
//---Чтение глобальной переменой
double SL= GlobalVariableGet(name1);
Alert(SL);
//Возвращает общее количество глобальных переменных
Alert(GlobalVariablesTotal());

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Решил вместо экспирации применить проверку на наличие отложенников в 15:00 и их удаление. По крайней мере мне проще реализовать))

У меня другой вопрос еще есть. Никак не уловлю принцип OrderModify.
Причем модификацию хочу провести только для открытых ордеров (OP_SELL и OP_BUY), чтобы переводить в безубыток по достижению n-го числа пунктов.

Структура ее выглядит так:

Цитата

bool OrderModify(
int ticket, // номер ордера
double price, // цена открытия
double stoploss, // stop loss
double takeprofit, // take profit
datetime expiration, // время истечения ордера
color arrow_color // цвет
);



Цену открытия нужно менять только для отложенников. Для открытого получается нужно писать просто ноль?

К примеру я вошел по PriceIn:
Цитата

OrderSend(NULL, OP_BUY, 0.3, PriceIn, 3, SL, 0, "", 12345, 0, Green);



Тогда, чтобы перевести в безубыток нужно следующую команду прописать:
Цитата

OrderModify(OrderTicket(), 0, PriceIn, 0, 0, Green);



Верно понимаю?
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
Спойлер


Решил вместо экспирации применить проверку на наличие отложенников в 15:00 и их удаление. По крайней мере мне проще реализовать))

У меня другой вопрос еще есть. Никак не уловлю принцип OrderModify.
Причем модификацию хочу провести только для открытых ордеров (OP_SELL и OP_BUY), чтобы переводить в безубыток по достижению n-го числа пунктов.

Структура ее выглядит так:

Цитата

bool OrderModify(
int ticket, // номер ордера
double price, // цена открытия
double stoploss, // stop loss
double takeprofit, // take profit
datetime expiration, // время истечения ордера
color arrow_color // цвет
);



Цену открытия нужно менять только для отложенников. Для открытого получается нужно писать просто ноль?

К примеру я вошел по PriceIn:
Цитата

OrderSend(NULL, OP_BUY, 0.3, PriceIn, 3, SL, 0, "", 12345, 0, Green);



Тогда, чтобы перевести в безубыток нужно следующую команду прописать:
Цитата

OrderModify(OrderTicket(), 0, PriceIn, 0, 0, Green);



Верно понимаю?


Не много не понял - "модификацию хочу провести только для открытых ордеров (OP_SELL и OP_BUY)" и чуть ниже фраза "Цену открытия нужно менять только для отложенников." Противоречие какое-то.
OrderModify изменяет параметры уже существующего ордера, чтобы перевести в бу открытый уже ордер
просто в цену стоп-лоса ордера вставляем цену открытия ордера
OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice(),OrderTakeProfit(), OrderExpiration(), Green);
при этом цену открытия ордера мы уже изменить не можем - там должна стоять цена, по которой ордер уже открылся. Переменные лучше не использовать - или в такие переменные надо присваивать фактическую цену открытия, так как цена открытия рыночного ордера и цена открытия отложенного ордера часто разнятся из-за проскальзываний.
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
Цитата


Не много не понял - "модификацию хочу провести только для открытых ордеров (OP_SELL и OP_BUY)" и чуть ниже фраза "Цену открытия нужно менять только для отложенников." Противоречие какое-то.



Это размышление вслух идет.

Цитата


OrderModify изменяет параметры уже существующего ордера, чтобы перевести в бу открытый уже ордер
просто в цену стоп-лоса ордера вставляем цену открытия ордера
OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice(),OrderTakeProfit(), OrderExpiration(), Green);



Спасибо, попрактикую!

Добавлено: 07-01-2017 18:31:24

Переводить в безубыток получается.

Использую такой код:
Цитата

if (OrderSelect (i, SELECT_BY_POS, MODE_TRADES) && OrderType() == OP_SELL)
OrderModify (OrderTicket(), OrderOpenPrice(), OrderOpenPrice(), 0, 0, clrRed);



Однако когда пытаюсь ставить условие, по которому перевод в безубыток будет происходить, сразу возникает ошибка 1.

К примеру: пытаюсь условие до простого доводить. Цена от входа на продажу 1.4210 до конца дня проходит до 1.4155.

Пишу условие:
Цитата


if (Bid if (OrderSelect (i, SELECT_BY_POS, MODE_TRADES) && OrderType() == OP_SELL)
OrderModify (OrderTicket(), OrderOpenPrice(), OrderOpenPrice(), 0, 0, clrRed);



Сразу возникает ошибка 1.

Пытаюсь отдельно проверять это условие через Print, всё работает - но модификация выводит ошибку.

По какой причине могут происходить такие проблемы?

Добавлено: 08-01-2017 09:58:51

Заработало!

По какой-то причине порой код отказывается исполняться если не прописать тип переменной на локальном уровне, непосредственно перед местом где он используется, хотя задан глобально в самом начале программе. Изменено пользователем jadd
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

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

123.jpg
PriceActionPatterns_d.mq4

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


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



Это не опечатка, там действительно нужно поправить код везде где при расчетах свечей производится деление, если в котировках свеча имеет Hi и Low по одной цене например, то разница будет 0 и соответственно далее на него деление - это и есть ошибка.
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Точно, косяк в сове. Как то не подумал я, что на н1 или даже на д1 может быть свеча с равными хаем и лоем. Кстати, может ли? Думаю, такое маловероятно. А вот косячок в котировках вполне может быть. Кстати, надо бы свои котиры проверить, есть ли такие свечи...

  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Подскажите пожалуйста как советнику объяснить что случился тейкпрофит или стоплосс? Нужно после такого события выдать определённую команду (например удалить или модифицировать отложку), а от чего оттолкнуться никак не соображу

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


Точно, косяк в сове. Как то не подумал я, что на н1 или даже на д1 может быть свеча с равными хаем и лоем. Кстати, может ли? Думаю, такое маловероятно. А вот косячок в котировках вполне может быть. Кстати, надо бы свои котиры проверить, есть ли такие свечи...


Дмитрий, было бы замечательно, если бы вы подсказали как это красиво подправить. Хочется доделать задание)) Спасибо.
rva7171 уважение вам, за быстрый и точный комментарий.
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано



Точно, косяк в сове. Как то не подумал я, что на н1 или даже на д1 может быть свеча с равными хаем и лоем. Кстати, может ли? Думаю, такое маловероятно. А вот косячок в котировках вполне может быть. Кстати, надо бы свои котиры проверить, есть ли такие свечи...


Дмитрий, было бы замечательно, если бы вы подсказали как это красиво подправить. Хочется доделать задание)) Спасибо.
rva7171 уважение вам, за быстрый и точный комментарий.



Вот так как то и аналогично везде где деление

//+------------------------------------------------------------------+
int Rails()
{
double Close1=iClose(_Symbol,_Period,1);
double Open1=iOpen(_Symbol,_Period,1);
double Low1=iLow(_Symbol,_Period,1);
double High1=iHigh(_Symbol,_Period,1);
double Close2=iClose(_Symbol,_Period,2);
double Open2=iOpen(_Symbol,_Period,2);
double Low2=iLow(_Symbol,_Period,2);
double High2=iHigh(_Symbol,_Period,2);
HideTestIndicators(true);
double ATR=iATR(_Symbol,_Period,14,1);
HideTestIndicators(false);
double Close3=iClose(_Symbol,_Period,3);
double Open3=iOpen(_Symbol,_Period,3);
double CandleBody1=1;
double CandleSize1=1;
double CandleSize2=1;
if(MathAbs(Close1-Open1)!=0)CandleBody1=MathAbs(Close1-Open1);
if(High1-Low1!=0)CandleSize1=High1-Low1;
if(High2-Low2!=0)CandleSize2=High2-Low2;

if(MathAbs(Close1-Open1)/CandleSize1>0.7 && MathAbs(Close2-Open2)/CandleSize2>0.7 && High1-Low1>0.7*ATR && High2-Low2>0.7*ATR &&
MathAbs(Close2-Open2)/CandleBody1>=0.7 && MathAbs(Close2-Open2)/CandleBody1 {
if(Close1Open2&&Close3>Open3) return(-1);
if(Close1>Open1&&Close2 }
return(0);
}
//+------------------------------------------------------------------+
  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

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

ТМА_за_переделы.mq4

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Помогите доделать запись всех сделок у файл лежащий в песочнице
1)Он запрашивает только первую сделку
2)только рыночный ордер
Нужно что бы все открытые сделки(рыночные и лимитные ордера) записывались у файл
,а если какая то сделка закрылась то он должна из файла исчезнуть.
Мне для билда 1010.

[glow=red,2,300]
//+------------------------------------------------------------------+
//| Export_trade.mq4 |
//| Copyright 2016, AM2 |

//+------------------------------------------------------------------+
#property copyright "Copyright 2016, AM2"
#property link "http://www.forexsystems.biz"
#property version "1.00"
#property strict

int type=0;
double lot=0,sl=0,tp=0;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---

//---
return(INIT_SUCCEEDED);
}


//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
Comment("");
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void Log(string s="")
{
//--- Открываем файл
int h=FileOpen("log.txt",FILE_READ|FILE_WRITE|FILE_TXT);
FileWrite(h,s);
FileClose(h); // закрываем файл
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY)
{
type=0;
lot=OrderLots();
sl=OrderStopLoss();
tp=OrderTakeProfit();
}
if(OrderType()==OP_SELL)
{
type=0;
lot=OrderLots();
sl=OrderStopLoss();
tp=OrderTakeProfit();
}

}//OrderSymbol
sl=NormalizeDouble(sl,Digits);
tp=NormalizeDouble(tp,Digits);
Log(Symbol()+" "+(string)type+" "+(string)lot+" "+(string)sl+" "+(string)tp);
RefreshRates();
}//OrderSelect
}//


Comment("\n Order Type: ",type,
"\n Order Lots: ",lot,
"\n StopLoss: ",sl,
"\n TakeProfit: ",tp);
}
//+------------------------------------------------------------------+
[/glow]


Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Ты открываешь файл, записываешь сделку первую туда и тут же файл закрываешь.
Убери функцию void Log(string s="")
После
void OnTick()
{
поставь
int h=FileOpen("log.txt",FILE_READ|FILE_WRITE|FILE_TXT);
Затем вместо
Log(Symbol()+" "+(string)type+" "+(string)lot+" "+(string)sl+" "+(string)tp);
ставь FileWrite(h,s); и записывай что тебе нужно
а FileClose(h); // закрываем файл уже в самый конец, перед последней }

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


Ты открываешь файл, записываешь сделку первую туда и тут же файл закрываешь.
Убери функцию void Log(string s="")
После
void OnTick()
{
поставь
int h=FileOpen("log.txt",FILE_READ|FILE_WRITE|FILE_TXT);
Затем вместо
Log(Symbol()+" "+(string)type+" "+(string)lot+" "+(string)sl+" "+(string)tp);
ставь FileWrite(h,s); и записывай что тебе нужно
а FileClose(h); // закрываем файл уже в самый конец, перед последней }



НЕ ПОМОГАЕТ.
http://joxi.ru/E2p9xq3hkaKKAY
//+------------------------------------------------------------------+
//| Export.mq4 |
//| Copyright 2016, AM2 |
//| http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, AM2"
#property link "http://www.forexsystems.biz"
#property version "1.00"
#property strict

int type=0;
double lot=0,sl=0,tp=0;
string s="";
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---

//---
return(INIT_SUCCEEDED);
}


//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
Comment("");
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void Log(string s="")
{


}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//--- Открываем файл
int h=FileOpen("log.txt",FILE_READ|FILE_WRITE|FILE_TXT);
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY)
{
type=0;
lot=OrderLots();
sl=OrderStopLoss();
tp=OrderTakeProfit();
}
if(OrderType()==OP_SELL)
{
type=1;
lot=OrderLots();
sl=OrderStopLoss();
tp=OrderTakeProfit();
}

}//OrderSymbol
sl=NormalizeDouble(sl,Digits);
tp=NormalizeDouble(tp,Digits);
s=Symbol()+" "+(string)type+" "+(string)lot+" "+(string)sl+" "+(string)tp;
FileWrite(h,s);
RefreshRates();
}//OrderSelect
FileClose(h);
}//


Comment("\n Order Type: ",type,
"\n Order Lots: ",lot,
"\n StopLoss: ",sl,
"\n TakeProfit: ",tp);
}
//+------------------------------------------------------------------+
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Не, сл, тп, s и filewrite нужно до закрывающей скобки поставить, той, где коммент с ордерсимволом

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Не, сл, тп, s и filewrite нужно до закрывающей скобки поставить, той, где коммент с ордерсимволом


Сделал пишет в файл njkmrj gjcktly.. cltkre?z nfr gjybvf. ne yf rjnjhjq dbcbn rjgbhjdobr
http://joxi.ru/8An9nqahvyok2O

Добавлено: 10-01-2017 20:17:09

Не, сл, тп, s и filewrite нужно до закрывающей скобки поставить, той, где коммент с ордерсимволом



void OnTick()
{
//--- Открываем файл
int h=FileOpen("log.txt",FILE_READ|FILE_WRITE|FILE_TXT);
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY)
{
type=0;
lot=OrderLots();
sl=OrderStopLoss();
tp=OrderTakeProfit();
}
if(OrderType()==OP_SELL)
{
type=1;
lot=OrderLots();
sl=OrderStopLoss();
tp=OrderTakeProfit();
}
sl=NormalizeDouble(sl,Digits);
tp=NormalizeDouble(tp,Digits);
s=Symbol()+" "+(string)type+" "+(string)lot+" "+(string)sl+" "+(string)tp;
FileWrite(h,s);
RefreshRates();
}//OrderSymbol

}//OrderSelect
FileClose(h);
}//
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Ну, что не так то? Все правильно же работает,верно?

Кстати, ты писал

Цитата

Нужно что бы все открытые сделки(рыночные и лимитные ордера) записывались у файл


А проверку на лимитные и стоповые ордера я не вижу в коде.
if(OrderType()==OP_SELLSTOP, SELLLimit, BUYLIMIT и т.д.

И, кстати, тебе нужно по одной только паре все сделки или по всем?
Наверное по всем, но тогда if(OrderSymbol()==Symbol()) - лишняя проверка.
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Ну, что не так то? Все правильно же работает,верно?


Не работает,убрал проверку на валютную пару,добавил отложенные ордера
http://joxi.ru/Grq9kplhMGqqrz

void OnTick()
{
//--- Открываем файл
int h=FileOpen("log.txt",FILE_READ|FILE_WRITE|FILE_TXT);
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{

if(OrderType()==OP_BUY)
{
type=0;
lot=OrderLots();
sl=OrderStopLoss();
tp=OrderTakeProfit();
}

if(OrderType()==OP_SELL)
{
type=1;
lot=OrderLots();
sl=OrderStopLoss();
tp=OrderTakeProfit();
}
if(OrderType()==OP_BUYLIMIT)
{
type=2;
lot=OrderLots();
sl=OrderStopLoss();
tp=OrderTakeProfit();
}
if(OrderType()==OP_SELLLIMIT)
{
type=3;
lot=OrderLots();
sl=OrderStopLoss();
tp=OrderTakeProfit();
}
if(OrderType()==OP_BUYSTOP)
{
type=4;
lot=OrderLots();
sl=OrderStopLoss();
tp=OrderTakeProfit();
}
if(OrderType()==OP_SELLSTOP)
{
type=5;
lot=OrderLots();
sl=OrderStopLoss();
tp=OrderTakeProfit();
}
sl=NormalizeDouble(sl,Digits);
tp=NormalizeDouble(tp,Digits);
s=Symbol()+" "+(string)type+" "+(string)lot+" "+(string)sl+" "+(string)tp;
FileWrite(h,s);
RefreshRates();


}//OrderSelect
FileClose(h);
}//
Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Специальное предложение


  • Рекомендуемые брокеры

  • ×
    ×
    • Создать...