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

Ugar

Гуру форума
подскажите пожалуйста что то не так?
Нет условия для модификации, нет уровня нового стопа.
Код:
void TrallStop()
{
for ( int i = OrdersTotal()-1; i>0, i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == true && OrderMagicNumber()== Magic)
{
if(OrderType()== OP_BUY)
{
double oop = OrderOpenPrice();//цена открытия
double osl = OrderStopLoss();//стоплос
double sl=Bid-Distance*_Point;//Новый стоп
//Условие модификации если новый стоп больше цены открытия и больше стоп лосс
if(sl>opp && sl>osl)
{
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(sl,_Digits),OrderTakeProfit(),0,clrNONE);
}
}
}
}
return;
}
Здесь Distance дистанция трейлинга в пунктах.
 

neptun

Прохожий
Пишем советник самостоятельно

Приветствую всех ! я не програмист но меня эта тема зацепила
начинаю зубрить но тяжко идет но идет по тихоньку
ребят может кто подскажет код под mt4 буду благодарен
чтоб советник набрал Buy , Sell по 5-7 ордеров и больше не торговал
пока снова не будет меньше 5
 

Ugar

Гуру форума
Приветствую всех ! я не програмист но меня эта тема зацепила
начинаю зубрить но тяжко идет но идет по тихоньку
ребят может кто подскажет код под mt4 буду благодарен
чтоб советник набрал Buy , Sell по 5-7 ордеров и больше не торговал
пока снова не будет меньше 5
Надо посчитать открытые ордера, Buy , Sell отдельно.
int Buy=0, Sell=0;//В этих переменных будет количество открытых ордеров
for(int i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderType()==OP_BUY)Buy++;
if(OrderType()==OP_SELL)Sell++;
}
}

Дальше перед открытием проверить сколько уже открыто, если меньше 5 то открывать.

if(Buy<5)
{
//Здесь код открытия Buy

}

if(Sell<5)
{
//Здесь код открытия Sell

}
Конечно этот вариант счётчика упрощённый, для изучения пойдёт.
 

Leonup

Новичок форума
Нужный таймфрейм

Добрый день!
Вопрос есть такой. Как программно через входные параметры указывать (изменять) нужный таймфрейм? Например, здесь:
iHigh(Symbol(),PERIOD_H1,1)
Помогите, пожалуйста.
 

AlexeyVik

Программист mql4 mql5
Добрый день!
Вопрос есть такой. Как программно через входные параметры указывать (изменять) нужный таймфрейм? Например, здесь:
iHigh(Symbol(),PERIOD_H1,1)
Помогите, пожалуйста.
Как-то так


Код:
 input  ENUM_TIMEFRAMES TimeFrame = PERIOD_W1;





iHigh(Symbol(),TimeFrame,1);
 

rkkgs

Активный участник
dear coder

my name and my mail id diplay to chart text blue color

give me mt4 mql code

thank you
advance
 

Ramil-2427

Местный житель
Подскажите пожалуйста,сложно ли в советник вставить код,на определенный заработок в сутки? Ну допустим,заработал 1% и перестал торговать.Или как можно иначе это реализовать?
 

vlad_123

Местный знаток
Подскажите пожалуйста,сложно ли в советник вставить код,на определенный заработок в сутки? Ну допустим,заработал 1% и перестал торговать.Или как можно иначе это реализовать?

:laugh:
Странно ограничивать профит, а не убыток...
Или так прет, что деньги складывать некуда?
 

Ugar

Гуру форума
Подскажите пожалуйста,сложно ли в советник вставить код,на определенный заработок в сутки? Ну допустим,заработал 1% и перестал торговать.Или как можно иначе это реализовать?
Не очень, для тех кто умеет. Простейший вариант:
В начале дня запомнить баланс или средства, в зависимости от чего надо считать %. Посчитать прибыль закрытых ордеров за день в %, и если она достигла желаемого, запретить открывать сделки. Можно посчитать и открытые сделки, тогда их надо закрыть.
 

vladradon

Программист
Подскажите пожалуйста,сложно ли в советник вставить код,на определенный заработок в сутки? Ну допустим,заработал 1% и перестал торговать.Или как можно иначе это реализовать?
Что-нибудь типа этого:
PHP:
extern double Percent=1.0;
double Bal=0.0;
datetime Top=0;
void OnTick()
  {
   if(Top!=iTime(_Symbol,PERIOD_D1,0) {Bal=AccountBalance(); Status=true;}
   if(AccountEquity()>=Bal+Bal/100*Percent) {'функция закрытия ордеров в рынке'; Status=false;}
   if(!Status) return;

...дальше код сова...
 

Ugar

Гуру форума
:laugh:
Странно ограничивать профит, а не убыток...
Или так прет, что деньги складывать некуда?
Так делают и те кто торгует с коротким тейком и огромным стопом или вовсе без него, пересиживают убытки. Так делают мартингейлщики. А если учесть что пересиживают и мартингелят большинство, то чему тут удивляться.
 

Ramil-2427

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

Я учту во внимание Ваше предложение))):D
 

vlad_123

Местный знаток
Так делают и те кто торгует с коротким тейком и огромным стопом или вовсе без него, пересиживают убытки. Так делают мартингейлщики. А если учесть что пересиживают и мартингелят большинство, то чему тут удивляться.

А не проще ли пользовать усредненный тэйк профит?
У меня считает примерно так:
1. по всем ордерам пары суммируем:
Код:
      glOrderOpenPrice_Average += OrderOpenPrice() * OrderLots();
      glTotalLots += OrderLots();
2. Если ордеров >0:
Код:
glOrderOpenPrice_Average = NormalizeDouble(glOrderOpenPrice_Average / glTotalLots, Digits);
3. Для Buy-ордеров выставляем новый ТП = glOrderOpenPrice_Average +TakeProfitPips*Point, для Sell = glOrderOpenPrice_Average -TakeProfitPips*Point
 

vlad_123

Местный знаток
Придется часть кода переделывать, а с этим есть проблемки - код ломаный.:)

Ну, если декомпайлер совсем иф-ы покорябил - взять идею сова и написать самому. У меня подобный простецкий декомпайл в пару сотен строк разросся в 2000+ ;)
А кроме долбанутых декомпиленных условий - я (потенциально) непреодолимых граблей в декомпайлах не встрачал. Ну, кроме еще зависимости от длл-ек.
Хотя, и новых советников/индикаторов сейчас не ищу и, соответственно, с декомпайлами особо не сталкиваюсь.
 

Ramil-2427

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

vladradon

Программист
Ну, если декомпайлер совсем иф-ы покорябил - взять идею сова и написать самому. У меня подобный простецкий декомпайл в пару сотен строк разросся в 2000+
А кроме долбанутых декомпиленных условий - я (потенциально) непреодолимых граблей в декомпайлах не встрачал. Ну, кроме еще зависимости от длл-ек.
Хотя, и новых советников/индикаторов сейчас не ищу и, соответственно, с декомпайлами особо не сталкиваюсь.
Проблем с декомпилами нет - главное, что не я ломал и моя совесть чиста - пока восстановишь весь функционал (имею ввиду не работоспособность, а сам алгоритм чтобы был понятен), столько времени убьешь впустую...
 

Ramil-2427

Местный житель
Вообще молодчик!;)
А что сделал, если не секрет, в 2-х словах?

Я вообще "0" в этом деле,взял нашел такой советник,где это условие выполняется и постарался перенести этот код куда мне надо).Проверил,все работает.Единственное,что он сам не начинает торговать на след.день.Где-то косячек :nda:
 
Верх