[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 765

 

кто поможет разобраться мне нужны цены на отложеные ордера из стопов и ейк профитов я использывал раньше вот так

PRAskL=Ask-Point*TakeProfit+Spread;  // цена OpenBuyLimitOrder
PRAskS=Ask+Point*TakeProfit+Spread;  // цена OpenBuyStopOrder
PRBidL=Bid+Point*TakeProfit-Spread;  // цена OpenSellLimitOrder
PRBidS=Bid-Point*TakeProfit-Spread;  // цена OpenSellStopOrder

где 
TakeProfit - глобальная переменая и грубо говоря ее значение постояно
Spread - временая переменая,



но мне не удобно брать цену через рынок и решил напрямую вот так
for(int h=1; h<=OrdersTotal(); h++)         
{if (OrderSelect(h-1,SELECT_BY_POS)==true)   
int Tip=OrderType();                   
if(HaveBuyOrder == true)continue; 
double PRAskS=OrderStopLoss();                   
double PRAskL=OrderTakeProfit();                    
int Tip1=OrderType();                           
if(HaveSellOrder == true)continue; 
double PRBidS=OrderStopLoss();                   
double PRBidL=OrderTakeProfit();   

но оно выдает ошибки 
Ошибка № 4107 при открытиии SELL ордера 
invalid takeprofit for OrderSend function

Ошибка № 4107 при открытиии BUY ордера              
invalid takeprofit for OrderSend function

как решить вопрос чтоб можно было брать ену по стопам и йкам рночноо ордера и при этом учитывать и спреды

 
FoxUA:

кто поможет разобраться мне нужны цены на отложеные ордера из стопов и ейк профитов я использывал раньше вот так

как решить вопрос чтоб можно было брать ену по стопам и йкам рночноо ордера и при этом учитывать и спреды

Андрей, ну вот опять, слишком мало кода, у вас ошибка в функции  OrderSend, а мы ее, и ее параметры на этом участке кода невидим. Вы хотите ставить отложенники опираясь на данные стоп-лоссов и тейк-профитов, уже имеющихся рыночных ордеров?

 
ToLik_SRGV:

Андрей, ну вот опять, слишком мало кода, у вас ошибка в функции OrderSend, а мы ее, и ее параметры на этом участке кода невидим. Вы хотите ставить отложенники опираясь на данные стоп-лоссов и тейк-профитов, уже имеющихся рыночных ордеров?

да имно так ставить отложенники опираясь на данные стоп-лоссов и тейк-профитов, уже имеющихся рыночных ордеров

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

 

да пример под правил он теперь открывает но данные токо одного ордера а имено селла дает

а имено на все 4 отложника тобиш цена откытия уменя по бай лос и сел лос а также бай стоп и сел стопом одинаковые,

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

GBPJPY,H1: SELL order opened : 137.16
GBPJPY,H1: open #3897394 sell limit 0.30 GBPJPY at 137.16 sl: 138.36 tp: 135.96 ok
GBPJPY,H1: SELL order opened : 134.76
GBPJPY,H1: open #3897393 sell stop 0.10 GBPJPY at 134.76 sl: 135.96 tp: 133.56 ok
GBPJPY,H1: BUY order opened : 134.76
GBPJPY,H1: open #3897392 buy limit 0.30 GBPJPY at 134.76 sl: 133.56 tp: 135.96 ok
GBPJPY,H1: BUY order opened : 137.16
GBPJPY,H1: open #3897391 buy stop 0.10 GBPJPY at 137.16 sl: 135.96 tp: 138.36 ok
GBPJPY,H1: SELL order opened : 135.96
GBPJPY,H1: open #3897390 sell 0.10 GBPJPY at 135.96 sl: 137.16 tp: 134.76 ok
GBPJPY,H1: BUY order opened : 136.04
GBPJPY,H1: open #3897389 buy 0.10 GBPJPY at 136.04 sl: 134.84 tp: 137.24 ok
GBPJPY,H1: initialized
GBPJPY,H1 inputs: StopLoss=120; TakeProfit=120; Lot=0.1; Magic=777; Slippage=5;
GBPJPY,H1: loaded successfully

for(int o=1; o<=OrdersTotal(); o++)                                   
{if (OrderSelect(o-1,SELECT_BY_POS)==true)                               
{ if (OrderSymbol()!= Curr_symb) continue;                          
  if (OrderType()>1) continue;      
{if(HaveBuyOrder == true) 
double PRAskL=OrderStopLoss();                   
double PRAskS=OrderTakeProfit();      
{                   
int Tip1=OrderType();                         
if(HaveSellOrder == true)
double PRBidL=OrderStopLoss();                   
double PRBidS=OrderTakeProfit(); } }                  
} }              
 
hedger:

Помогите разобраться.

На графике, который можно открыть в тестере после окончания тестирования, не всегда прорисовываются индикаторы, на которых базируется работа советника. Можно ли это исправить и если да, то как?  Ответьте, пожалуйста

Может быть все-таки существует ответ на мой вопрос?
 
hedger:

Может быть все-таки существует ответ на мой вопрос?

void HideTestIndicators( bool hide)
Функция выставляет флаг скрытия индикаторов, вызываемых экспертом. При открытии графика после тестирования индикаторы, помеченные флагом скрытия, не будут выведены на график тестирования. Перед каждым вызовом индикатор помечается текущим установленным флагом скрытия.
Необходимо отметить, что на график тестирования могут быть выведены только те индикаторы, которые непосредственно вызываются из тестируемого эксперта.
 
zhuki:

void HideTestIndicators( bool hide)
Функция выставляет флаг скрытия индикаторов, вызываемых экспертом. При открытии графика после тестирования индикаторы, помеченные флагом скрытия, не будут выведены на график тестирования. Перед каждым вызовом индикатор помечается текущим установленным флагом скрытия.
Необходимо отметить, что на график тестирования могут быть выведены только те индикаторы, которые непосредственно вызываются из тестируемого эксперта.

Спасибо, Игорь! А то ведь вслепую приходилось постигать азы.
 

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

PRAskL=StopLoss ордера Buy + Spread
PRAskS=TakeProfit ордера Buy + Spread
PRBidL=StopLoss ордера Sell-Spread
PRBidS=TakeProfit ордера Sell-Spread

 
FoxUA:

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

PRAskL=StopLoss ордера Buy + Spread
PRAskS=TakeProfit ордера Buy + Spread
PRBidL=StopLoss ордера Sell-Spread
PRBidS=TakeProfit ордера Sell-Spread

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

Например:

double Level_stop=MarketInfo(Symbol(),MODE_STOPLEVEL ); //Миним. дистаниция установки стопов

 
artmedia70:

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

Например:

double Level_stop=MarketInfo(Symbol(),MODE_STOPLEVEL ); //Миним. дистаниция установки стопов


нет тoт код который я выложил последним открывает без ошибок но открывает токо по даным селл там есть вырезка из журнала а это не есть правильно правельное распределение цен я описал вот в чем проблема

вот они так надо

PRAskL=StopLoss ордера Buy + Spread
PRAskS=TakeProfit ордера Buy + Spread
PRBidL=StopLoss ордера Sell-Spread
PRBidS=TakeProfit ордера Sell-Spread

а вот как преблизительно выглядит сечас

PRAskL=StopLoss ордера Sell

PRAskS=TakeProfit ордера Sell

PRBidL=StopLoss ордера Sell

PRBidS=TakeProfit ордера Sell

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