Спрашивайте! - страница 77

 

CodersGuru : нужна помощь по поводу 10 пунктов 3 EA....

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

Я новичок в торговле на Форекс и новичок на этом форуме тоже. Первый раз, я изучаю EuroX2_sl, расширенный из 10 пунктов 3 EA скрипт. После проведения нескольких тестов, этот советник хорошо открывает позицию, но не закрывает ее, как мне нужно, когда рынок разворачивается. Возможно, что-то не так с кодом (потому что я не программист), и я думаю, что мне нужна ваша помощь, чтобы решить это. Не могли бы вы проверить, какая часть кода может быть неправильной?

Условия следующие:

1. ОТКРЫТЬ ПОКУПКУ при наличии индикатора, т.е. стохастика.

2. ЗАКРЫТЬ ПОКУПКУ при наличии индикатора ОТКРЫТЬ ПРОДАЖУ. т.е. стохастик

3. ОТКРЫТЬ ПРОДАЖУ при наличии условия индикатора (№ 2 выше). т.е.: стохастик

4. ЗАКРЫТЬ ПРОДАЖУ при условии существования индикатора (№1 выше). т.е.: стохастик.

Я думаю, что позиция OPEN в порядке, но проблема в позиции CLOSE, так как она не закрывается (BUY или SELL), даже когда индикатор существует.

Код, как я это сделал:

-------- часть скрипта из EuroX2_sl расширена от 10 пунктов 3, как я думаю для закрытия позиции -------

// важно правильно войти в рынок,

// но еще важнее правильно выйти из него...

for(cnt=0;cnt<total;cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()<=OP_SELL && // проверяем наличие открытой позиции

OrderType()<=OP_BUY &&

OrderType()>=OP_SELL &&

OrderType()>=OP_BUY &&

OrderSymbol()==Symbol()) // проверка наличия символа

{

//+--------------------------------------------------------------

if(OrderType()==OP_BUY) // открыта длинная позиция

{

//+-------------------------------------------------------------------

//+ УСЛОВИЕ ДЛЯ ЗАКРЫТИЯ ПОЗИЦИИ

//+-------------------------------------------------------------------

//+--------------- ЗАКРЫТЬ ПОЗИЦИЮ НА ПОКУПКУ ----------------------------

if ( Stoch_Main_M15_Cu < Stoch_Sig_M15_Cu )

//+------------------------------------------------------------------

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet) ; // закрываем позицию

return(0); // выход

}

//+-----------------------------------------------------------------------

// проверка наличия трейлинг-стопа

if(TrailingStop>0)

{

if(Bid-OrderOpenPrice()>Point*TrailingStop)

{

if(OrderStopLoss()<Bid-Point*TrailingStop)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);

return(0);

}

}

}

}

//+---------------CLOSE SELL POSITION --------------------------------

else // переходим в короткую позицию

{ //+ НЕ УДАЛЯТЬ

if(OrderType()==OP_SELL) // открыта короткая позиция

{

}

// следует ли ее закрыть?

//+----------------------------------------------------------------------------

if ( Stoch_Main_M15_Cu > Stoch_Sig_M15_Cu )

//+-----------------------------------------------------------------------------

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet) ; // закрываем позицию

return(0); // выход

}

//+----------------------------------------

// проверка наличия трейлинг-стопа

if(TrailingStop>0)

{

if((OrderOpenPrice()-Ask)>(Point*TrailingStop))

{

if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);

return(0);

}

}

}

}

}

}

--------------------------------------------------------------

Спасибо,

fxgroup

 

Чтение данных из окна другой валютной пары

Мой советник находится в окне "GBPJPY", но мне нужно найти ObjectDescription() из другого окна, скажем, "USDJPY". (К сожалению, это индикатор Pivot, который не возвращает значения из iCustom()).

Кто-нибудь знает, как обратиться к другому (не текущему) окну пары, чтобы иметь возможность использовать на нем функции типа ObjectDescription()?

Или MQ4 этого не позволяет?

Спасибо

евро

 

Как изолировать прибыль одной валюты от других?

color color_of_pipsprofit;

color_of_pipsprofit = White;

int m,totalbuy;

totalbuy=OrdersTotal();

for(m=0;m<totalbuy;m++)

OrderSelect(m, SELECT_BY_POS, MODE_TRADES);

if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && OrderMagicNumber() == Reference)

{

pips_profit=OrderProfit();

}

if(pips_profit >= 0)

{

color_of_pipsprofit = Lime;

}

else {color_of_pipsprofit = Red;

}

int n,totalsell;

totalsell=OrdersTotal();

for(n=0;n<totalsell;n++)

OrderSelect(n, SELECT_BY_POS, MODE_TRADES);

if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber() == Reference)

{

pips=OrderProfit();

}

if(pips_profit >= 0)

{

color_of_pipsprofit = Lime;

}

else {color_of_pipsprofit = Red;

}

ObjectCreate("pips_profit", OBJ_LABEL, 0, 0, 0);

ObjectSetText("pips_profit",DoubleToStr(pips_profit,2),14, "Verdana", color_of_pipsprofit);

ObjectSet("pips_profit", OBJPROP_CORNER, 3);

ObjectSet("pips_profit", OBJPROP_XDISTANCE, 35);

ObjectSet("pips_profit", OBJPROP_YDISTANCE, 20);

}

Я создал эту кодировку, но не могу изолировать прибыль одной валюты от других торгуемых валют. Чего мне не хватает в моем коде?

Пожалуйста, рассмотрите. Спасибо за помощь!

Дэйв

 

Прибыль

Попробуйте этот код:

int start()

{

int total = OrdersTotal();

for (int cnt = total ; cnt >=0 ; cnt--)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol()==Symbol() && OrderMagicNumber() == MagicNumber)

{

Print(Profit(OrderType(),OrderSymbol(),OrderOpenPrice());

}

}

return(0);

}

double Profit(int type, string currency, double open)

{

if(type==OP_BUY) return((MarketInfo(currency,MODE_BID) - open) / MarketInfo(currency,MODE_POINT) ); //case buy

if(type ==OP_SELL) return((open - MarketInfo(currency,MODE_ASK)) / MarketInfo(currency,MODE_POINT)); //case buy

return(-1);

}[/php]

1Dave7:
[php]

color color_of_pipsprofit;

color_of_pipsprofit = White;

int m,totalbuy;

totalbuy=OrdersTotal();

for(m=0;m<totalbuy;m++)

OrderSelect(m, SELECT_BY_POS, MODE_TRADES);

if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && OrderMagicNumber() == Reference)

{

pips_profit=OrderProfit();

}

if(pips_profit >= 0)

{

color_of_pipsprofit = Lime;

}

else {color_of_pipsprofit = Red;

}

int n,totalsell;

totalsell=OrdersTotal();

for(n=0;n<totalsell;n++)

OrderSelect(n, SELECT_BY_POS, MODE_TRADES);

if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber() == Reference)

{

pips=OrderProfit();

}

if(pips_profit >= 0)

{

color_of_pipsprofit = Lime;

}

else {color_of_pipsprofit = Red;

}

ObjectCreate("pips_profit", OBJ_LABEL, 0, 0, 0);

ObjectSetText("pips_profit",DoubleToStr(pips_profit,2),14, "Verdana", color_of_pipsprofit);

ObjectSet("pips_profit", OBJPROP_CORNER, 3);

ObjectSet("pips_profit", OBJPROP_XDISTANCE, 35);

ObjectSet("pips_profit", OBJPROP_YDISTANCE, 20);

}

I created this coding, but I cannot isolate the profits of one currency from other currencies being traded. What am I lacking in my code??

Please review. Thanks for your help!

Dave
 
codersguru:
Попробуйте этот код:
int start()

{

int total = OrdersTotal();

for (int cnt = total ; cnt >=0 ; cnt--)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol()==Symbol() && OrderMagicNumber() == MagicNumber)

{

Print(Profit(OrderType(),OrderSymbol(),OrderOpenPrice());

}

}

return(0);

}

double Profit(int type, string currency, double open)

{

if(type==OP_BUY) return((MarketInfo(currency,MODE_BID) - open) / MarketInfo(currency,MODE_POINT) ); //case buy

if(type ==OP_SELL) return((open - MarketInfo(currency,MODE_ASK)) / MarketInfo(currency,MODE_POINT)); //case buy

return(-1);

}

Привет, Кодер,

Это не совсем то, что мне нужно. Я прилагаю изображение графика, чтобы проиллюстрировать то, что я ищу. Можете ли вы изменить кодировку для отображения прибыли? Если да, то я смогу заставить цвета меняться в зависимости от суммы прибыли. Я просто ищу прибыль для каждой конкретной валюты.

Файлы:
 

прикрепленный индикатор

Привет Codersguru

Я хочу, чтобы прилагаемый индикатор показывал открытие в полночь gmt, а не время сервера брокера, возможно ли это?

большое спасибо, Монти

 

Помогите с кодом

Не могли бы вы пошагово описать код? Я получаю неправильное значение (см. ниже "Account"), а затем оно корректно заполняется, но я не уверен почему.

int Account = 123456;

if (Account != AccountNumber())

{

Comment("Вы не можете использовать эту программу с этим счетом");

return (0);

}

else

{

Комментарий("Добро пожаловать в программу");

}

 

Простой вопрос

Будет ли советник нормально работать без функций init() и deinit()?

 
n7drazen:
Будет ли эксперт нормально работать без функций init() и deinit()?

Да,

Требуется только функция start.

 

Калензо,

У меня есть вопрос:

HEDGING:

Я ищу:

if (OrderOpenPrice() = = Bid (или Ask))

Цена открытия должна быть равна новой цене.

Я хеджирую одной парой EURUSD.

Если цена открытия - продажа, а цена 1.3580,

цена покупки должна быть такой же.

Спасибо. Вот коды.

B.

//------------------------------------------

if(Buy==0)

{

RefreshRates();

OrderSend(Symbol_1,OP_BUY,lotsi,MarketInfo(Symbol_ 1,MODE_ASK),...

RefreshRates();

if (OrderOpenPrice() == Bid)

{

OrderSend(Symbol_1,OP_SELL,lotsi,MarketInfo(Symbol _1,MODE_BID),...

}

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