Основные вопросы ... - страница 2

 

Попробую объяснить сам:

Предположим, у меня есть 3 разные системы:

система 1 лучше всего работает на графике EUR/USD 1M.

система 2 лучше всего работает на графике EUR/USD 5M.

Система 3 лучше всего работает на графике EUR/USD 1H.

Теперь я хочу, чтобы мой советник открывал по 1 позиции на график и не более. Другими словами, я хочу открывать 1 позицию только для системы 1, 1 позицию для системы 2 и 1 для системы 3.

В предыдущем решении вы написали ограничение 1 позиции на символ, а теперь я хочу ограничить 1 позицию на тип графика...

 

. Другими словами, я хочу открыть 1 позицию только для системы 1, 1 позицию для системы 2, и 1 для системы 3.

OK

тогда вы работаете с MAGIC Number на систему

#property copyright "system 1"

#property link ""

#define MAGIC 01901

.

.

.

if ( ExistPosition() == False) {

OrderSend(Symbol(),op,Lots,pp,SLIPPAGE,ldStop,ldTake,lsComm,MAGIC,0,clOpen); // MAGIC = system 1

}

// if open 1 position only for system 1 MAGIC ?

bool ExistPosition() {

bool Exist=False;

for (int i=0; i<OrdersTotal(); i++) {

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {

if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC) Exist=True;

}

}

return(Exist);

}

Вы можете выложить свои системы?

 

10x!

У меня нет конкретной системы. Это был только пример.

Я новичок в metaTrader и это был основной вопрос, который у меня возник...

Как только я напишу что-нибудь хорошее, я выложу это здесь для комментариев...

 

Как заставить советника торговать один раз на свечу?

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

Заранее спасибо

 
basza:
Мне интересно, есть ли кусок кода, который я могу добавить в советник, чтобы он торговал только один раз на свечу. Заранее спасибо.

static datetime timeprev;

if(timeprev==Time[0]) {

return(0); //выполняется только на новом баре

} else if (timeprev==0) {

timeprev=Time[0]; //ничего не делать, если график только что добавлен на график

return(0);

} else {

timeprev=Time[0];

// обработка бара здесь

}

 
ra300z:
static datetime timeprev;

if(timeprev==Time[0]) {

return(0); //выполняется только на новом баре

} else if (timeprev==0) {

timeprev=Time[0]; //ничего не делать, если график только что добавлен на график

return(0);

} else {

timeprev=Time[0];

// обработка бара здесь

}

Спасибо ra300z

 

Отображение процентной цели?

Здравствуйте

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

У меня есть такой код, который отображает текущий баланс в виде комментария:

"Процентная цель : " + AccountBalance()"\n".

В начале ea у меня есть следующее:

extern int ProfitPercentage=25;

Теперь я хочу сделать следующее: AccountBalance * ProfitPercentage и отобразить результаты. Например, $5675.69 * 25% = $1418.92 и отобразить только $1418.69.

Заранее спасибо

 

привет ребята....

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

Например, советник ma cross... когда ma пересекается вверх и с целью 20 пунктов, он закрывается, но когда тренд продолжается, он попытается открыть другую сделку, так как быстрая ma все еще выше медленной ma.Он должен открыть другую сделку, только когда ma пересекается вниз.

быстрая ma > медленная ma = нужен только один торговый сигнал

быстрая ma < медленная ma = также нужен только один торговый сигнал.

2:есть ли возможность поставить временную задержку на пересечение? Я знаю только, что разделение пунктов (как бы они это не называли) означает, что он будет ждать 10-15 пунктов после пересечения и только потом открывать сделку.

Я просто новичок, пытаюсь выучить язык mq4:)

 

один из способов - заставить советника смотреть на исторические показания MA, а не на текущие. В принципе, так и было бы:

// Recognise past crossing (up or down)

if ( fast( past+1 ) slow( past ) )

then cmd = OP_BUY;

else if ( fast( past+1 ) >= slow( past+1 ) && fast( past ) < slow( past ) )

then cmd = OP_SELL;

else return;

// If processing reaches this point, then a trade decision of either OP_BUY

// or OP_SELL has been made, due to recognising a supporting MA crossing

// at "past" number of bars in history.

// Limit to only one trade in a direction

static int last_trade = -1;

if ( last_trade == cmd ) return;

last_trade = cmd;

// If processing reaches this point, then this processing is the first time

// that the supporting MA crossing is recognised.

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

 

спасибо брату за код...

Причина обращения: