Ваши вопросы по языку MQL4

Ugar

Гуру форума
Привет.
Что нужно дописать в советник что бы он открывал ордер соразмерно балансу?

Например:
при
$100 лот 0.06
$200 лот 0.12
$500 лот 0.3
$1000 лот 0.6
$1200 лот 0.78
$1500 лот 0.9
$2000 лот 1.2
$3000 лот 1.8
$5000 лот 3.0
$10000 лот 6.0
Простейший вариант
lot=NormalizeDouble(AccountBalance()*0.0006,2);
 

_SERG_

Активный участник
У меня такой вопрос?
Думаю коль вы пишите советники, то наверное для вас ответить плевое дело или хоть укажите что почитать или где написано. Весь поиск перерыл одна реклама форекса
ac.gif
(
Суть такова, я пишу или пробую писать советник, сигналы беру на новостях, все это обрабатываю в питоне, получается некая картинка и график. Теперь вопрос с знатокам, в каком формате мне сохранить данные чтоб их можно было локально увидеть во вкладке сигналы на торговой платформе М4 или М5.
Если есть вариант какой то иной, типа есть советник который читает сделки из файла, то тоже пойдет.. Под него нарисую. мне важно знать формат входных данных, какой вид список, кортеж или как то еще, чтоб вывести данные именно такого вида. И еще знать бы как их впихнуть в торговый терминал. Всем спасибо большое.
Ugar ответил на твой вопрос, но можно и дополнить его ответ, раз дело плевое. :D

Вариант 1, средствами терминала МТ4/5 через файловые операции. Можно с преобразованиями в строковые, или через структуры, или строковые поля с разделителями, или бинарные данные с побайтовой разборкой, в общем есть варианты. Выбирай, что ближе к телу. Ну и эта комбинация через песочницу.

Вариант 2, тоже через файловые операции, но с использованием PIPE, это и за пределы песочницы работает. На питоне на сколько я помню файловыми операциями проблем нет, ну и как следствие с PIPE, тоже не будет. Разве что для винды PIPE сервер написать, и запускать его как сервис.

Вариант 3, через API, в этом случае и в песочницу, и за песочницу, и по TCP и UDP, и за фаервол, по сетке хоть куда. Правда криптонуть придется, все что в сетку пойдет, если о конфиденциальности не забывать, и на приемной стороне раскриптовать можно будет.

Искать, все в доке и на сайте метаквотовцев или майкрософт, в зависимости от направления поиска.
Инфы вполне достаточно для решения разных задач.
 

incomeasset

Элитный участник
int start () {
bool(mostrarGraficoHorario enHorario);
if (gi_160) ajustarTrailingStopTodas(gi_164, gi_168);
if (g_time_448 == 0 || Repetir) {
abrirPosiciones();
g_time_448 = Time[0];
}
return (0);
}

выдает такую ошибку Скажите пожалуйста как это исправить кто знает
'(' - name expected
 

_SERG_

Активный участник
int start () {
bool(mostrarGraficoHorario enHorario);
if (gi_160) ajustarTrailingStopTodas(gi_164, gi_168);
if (g_time_448 == 0 || Repetir) {
abrirPosiciones();
g_time_448 = Time[0];
}
return (0);
}

выдает такую ошибку Скажите пожалуйста как это исправить кто знает
'(' - name expected
Дык, выдает ещё строку и колонку в которой эта ошибка возникла.
А вообще на декомпилах, тем более старых, тренероваться не стоит. Ничему не научишся , а время потратишь.
А так, по простому, так скобки "(" не хватает, скорее всего здесь посредине :"bool(mostrarGraficoHorario )( enHorario);" Или запятушки, "," между "mostrarGraficoHorario" и "enHorario".
 

incomeasset

Элитный участник
Дык, выдает ещё строку и колонку в которой эта ошибка возникла.
А вообще на декомпилах, тем более старых, тренероваться не стоит. Ничему не научишся , а время потратишь.
А так, по простому, так скобки "(" не хватает, скорее всего здесь посредине :"bool(mostrarGraficoHorario )( enHorario);" Или запятушки, "," между "mostrarGraficoHorario" и "enHorario".
int start() {
bool"mostrarGraficoHorario" "enHorario"?());
if (gi_160) ajustarTrailingStopTodas(gi_164, gi_168);
if (g_time_448 == 0 || Repetir) {
abrirPosiciones();
g_time_448 = Time[0];
}
return (0);
}

Спасибо за помощь изменил но теперь новая ошибка появилась
'mostrarGraficoHorarioenHorario' - name expected
 

_SERG_

Активный участник
int start() {
bool"mostrarGraficoHorario" "enHorario"?());
if (gi_160) ajustarTrailingStopTodas(gi_164, gi_168);
if (g_time_448 == 0 || Repetir) {
abrirPosiciones();
g_time_448 = Time[0];
}
return (0);
}

Спасибо за помощь изменил но теперь новая ошибка появилась
'mostrarGraficoHorarioenHorario' - name expected

Лучше на такое поменяй: " // bool(mostrarGraficoHorario enHorario); "

Давно в теме?
 

incomeasset

Элитный участник
Лучше на такое поменяй: " // bool(mostrarGraficoHorario enHorario); "

Давно в теме?
int start() {
" // bool(mostrarGraficoHorario enHorario); "
if (gi_160) ajustarTrailingStopTodas(gi_164, gi_168);
if (g_time_448 == 0 || Repetir) {
abrirPosiciones();
g_time_448 = Time[0];
}
return (0);
}

недавно насчёт темы

спасибо Вот ещё одна ошибка,
'if' - semicolon expected
 

_SERG_

Активный участник
int start() {
" // bool(mostrarGraficoHorario enHorario); "
if (gi_160) ajustarTrailingStopTodas(gi_164, gi_168);
if (g_time_448 == 0 || Repetir) {
abrirPosiciones();
g_time_448 = Time[0];
}
return (0);
}

недавно насчёт темы

спасибо Вот ещё одна ошибка,
'if' - semicolon expected
Ты не обижайся, но созрел вопрос, как у тебя с образованием? Ты в курсе что такое знаки препинания и пунктуация?

***
Пунктуация - это:
  1. Система знаков препинания
  2. Раздел языкознания, изучающий знаки препинания и правила их употребления на письме
В общеобразовательной программе изучается 10 знаков препинания: точка (.), вопросительный знак (?), восклицательный знак (!), многоточие (...), запятая (,), точка с запятой (;), двоеточие (:), тире (-), скобки (круглые) ( ), кавычки (" "). Знаки препинания служат для обозначения в предложении и в тексте границ смысловых отрезков, значение которых особо подчеркивается пишущим. Знаки препинания обеспечивают пишущему и читающему однозначное понимание предложения и текста.
Теперь по теме:
Исправь на:
// bool(mostrarGraficoHorario enHorario);

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

Как то сказал одному персонажу по телефону :" Поставь двоеточие туда то.....", он говорит нет не работает!
Приезжаю, смотрю, стоит ".." вместо ":", вот такие пирожки. :D
 

incomeasset

Элитный участник
Ты не обижайся, но созрел вопрос, как у тебя с образованием? Ты в курсе что такое знаки препинания и пунктуация?

***
Пунктуация - это:
  1. Система знаков препинания
  2. Раздел языкознания, изучающий знаки препинания и правила их употребления на письме
В общеобразовательной программе изучается 10 знаков препинания: точка (.), вопросительный знак (?), восклицательный знак (!), многоточие (...), запятая (,), точка с запятой (;), двоеточие (:), тире (-), скобки (круглые) ( ), кавычки (" "). Знаки препинания служат для обозначения в предложении и в тексте границ смысловых отрезков, значение которых особо подчеркивается пишущим. Знаки препинания обеспечивают пишущему и читающему однозначное понимание предложения и текста.
Теперь по теме:
Исправь на:
// bool(mostrarGraficoHorario enHorario);

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

Как то сказал одному персонажу по телефону :" Поставь двоеточие туда то.....", он говорит нет не работает!
Приезжаю, смотрю, стоит ".." вместо ":", вот такие пирожки. :D
Спасибо заработала Я просто новый в этом языке есть ещё одна ошибка Если захотите помочь чтобы смог получить ex4 файл

if (OperarSiempre? 0 : ){

'if' - expression expected ошибка
 

_SERG_

Активный участник
Спасибо заработала Я просто новый в этом языке есть ещё одна ошибка Если захотите помочь чтобы смог получить ex4 файл

if (OperarSiempre? 0 : ){

'if' - expression expected ошибка
Выглядит как недописанный тернарный оператор

if (OperarSiempre ? 0 : 1){
//--- тело условия
}

А какой язык ты до этого знал?
 

incomeasset

Элитный участник
Выглядит как недописанный тернарный оператор

if (OperarSiempre ? 0 : 1){
//--- тело условия
}

А какой язык ты до этого знал?
if (OperarSiempre? 0 : ){
l_text_4 = "Cargando datos...";
if (ObjectFind(gs_horario_424) == -1) {
ObjectCreate(gs_horario_424, OBJ_LABEL, 0, 0, 0);
ObjectSet(gs_horario_424, OBJPROP_CORNER, 2);
ObjectSet(gs_horario_424, OBJPROP_XDISTANCE, 20);
ObjectSet(gs_horario_424, OBJPROP_YDISTANCE, 10);
ObjectSetText(gs_horario_424, l_text_4, 14, "Times New Roman", Lime);
}

вот весь kод пожалуйста,а насчёт языка программирования пока ни одного зто первый
 

_SERG_

Активный участник
if (OperarSiempre? 0 : ){
l_text_4 = "Cargando datos...";
if (ObjectFind(gs_horario_424) == -1) {
ObjectCreate(gs_horario_424, OBJ_LABEL, 0, 0, 0);
ObjectSet(gs_horario_424, OBJPROP_CORNER, 2);
ObjectSet(gs_horario_424, OBJPROP_XDISTANCE, 20);
ObjectSet(gs_horario_424, OBJPROP_YDISTANCE, 10);
ObjectSetText(gs_horario_424, l_text_4, 14, "Times New Roman", Lime);
}

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

Ugar

Гуру форума
чет не запускается так
Не проверял. Но сейчас проверил. Вписал строчку в скрипт, нормально компилируется и работает.
Вероятно проблема не в строчке, а в том куда она вставлена.
 

Вложения

  • 111.jpg
    111.jpg
    11 КБ · Просмотры: 10
  • 112.jpg
    112.jpg
    17 КБ · Просмотры: 10

Qwant

Новичок форума
Не проверял. Но сейчас проверил. Вписал строчку в скрипт, нормально компилируется и работает.
Вероятно проблема не в строчке, а в том куда она вставлена.

Советник не мой. параметры я могу поменять различные. Вставил то что вы написали. А что дальше и куда я не знаю) на MT4
 

Ugar

Гуру форума
Советник не мой. параметры я могу поменять различные. Вставил то что вы написали. А что дальше и куда я не знаю) на MT4
Если совсем никак в программировании, надо обратиться к тому то хоть чуть понимает и переделывает советники. а лучше к автору советника. Наверняка он и без моих подсказок справится.
 

Qwant

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

говорит все это он может легко сделать, но говорит учи язык.
 
Последнее редактирование модератором:
  • Like
Реакции: Ugar

Ugar

Гуру форума
говорит все это он может легко сделать, но говорит учи язык.
Если дома сломался телик, это не причина осваивать ремонт телевизоров. Проще обратиться к тому кто это умеет.
Стоит изучать ремонт теликов если их потом надо чинить много. Или если просто интересно как это работает.
То же и с программированием. Стоит изучать если интересно или нужно много программировать, а не для того что бы встроить строчку в советник.
 
Последнее редактирование модератором:

Qwant

Новичок форума
Если дома сломался телик, это не причина осваивать ремонт телевизоров. Проще обратиться к тому кто это умеет.
Стоит изучать ремонт теликов если их потом надо чинить много. Или если просто интересно как это работает.
То же и с программированием. Стоит изучать если интересно или нужно много программировать, а не для того что бы встроить строчку в советник.
Да. Он гений и все такое, но не программист. Собрал боевого советника и больше ничего не хочет)
 
Верх