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

 
belck:

такой вопрос. я хочу тейк профит выставлять вот таким образом:

if (TakeProfit<10*Point) TakeProfit=10*Point;
  
линия индикатора через определенное время меняет свое расположение. а как сделать, что бы take profit не изменялся, а оставался таким, как был присвоен при открытии?
затрудняюсь даже предположить зачем Вы вычисляете ТР, обычно тейк вычисляется в момент выставления ордера - тогда он будет присвоен ордеру и изменить его необходимо использовать OrderModify(), бывает, что ТР виртуальный, тогда запоминайте в массиве
 
IgorM:
затрудняюсь даже предположить зачем Вы вычисляете ТР, обычно тейк вычисляется в момент выставления ордера - тогда он будет присвоен ордеру и изменить его необходимо использовать OrderModify(), бывает, что ТР виртуальный, тогда запоминайте в массиве

спасибо за совет.

 

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

Если можно,подскажите,я на связи думаю быть.

 

//+------------------------------------------------------------------+
//| Границы Димона .mq4 |
//| Copyright © 2010, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
extern int BandsPeriod=20,i=1 ;extern int BandsShift=0;
extern double BandsDeviations=2.0;
extern double Lots=0.1,TakeProfit=50,stoploss=10 ;
int init()
{int Средняя;
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{double Средняя,Верхняяграница,Нижняяграница,newres,sum,deviation;

Средняя=iMA(NULL,0,BandsPeriod,BandsShift,MODE_SMA,PRICE_CLOSE,i);
//----
newres=Close[i]-Средняя;
sum=newres*newres;


deviation=BandsDeviations*MathSqrt(sum/BandsPeriod);
Верхняяграница=Средняя+deviation;
Нижняяграница=Средняя-deviation;
//----
if (Верхняяграница<Close[i])
{ Comment(" буй! ",Верхняяграница );
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-stoploss*Point,Ask+TakeProfit*Point,"macd sample",16384,0,Green);

}


if (Нижняяграница>Close[i])
{ Comment(" селл! ",Нижняяграница );

OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+stoploss*Point,Bid-TakeProfit*Point,"macd sample",16384,0,Red);
}
return(0);
}
//+------------------------------------------------------------------+
 

 Извиняюсь за неанглийские переменные,мне так много проще,помнить что к чему.

 
VOLDEMAR:
Привет ! НЕ могу понять в чём косяк ???? Не модифицирует рыночный ордер
slb =NormalizeDouble(Bid - (StopLoss * Point),Digits); // расчёт стопа для бай позиций//
tpb =NormalizeDouble(Ask + (TakeProfit* Point),Digits); // расчёт профита для бай позиций//
sls =NormalizeDouble(Ask + (StopLoss * Point),Digits); // расчёт стопа для селл позиций//
tps =NormalizeDouble(Bid - (TakeProfit* Point),Digits);

//================================================== ==================//
int total=OrdersTotal();
int n=0;
for (int i=total-1; i>=0; i--)
{
if(OrderSelect(i, SELECT_BY_POS))
{
if(OrderSymbol()==Symbol())
{
n++;
}}}
if ( total == 1 )
{
for (int k=total-1; k>=0; k--)
{
if(OrderSelect(k, SELECT_BY_TICKET))
Alert("ордер есть", k);
{
if ((OrderType()==OP_BUY)&&(OrderTakeProfit()==0)&&(O rderStopLoss()==0))
{
OrderModify(k,OrderOpenPrice(),slb,tpb,0,Blue);
Alert("ошибка", GetLastError());

}}}}
return(0);}

В ЧЁМ ТРАБЛ ПОМОГИТЕ ...........?????

можете еще так по пробовать:

double TakeProfitBuy = NormalizeDouble((three - zero) / 4, Digits);
if (TakeProfitBuy<10*Point) TakeProfitBuy=10*Point;
double TakeProfitSell = NormalizeDouble((zero - two) / 4, Digits);
if (TakeProfitSell<25*Point) TakeProfitSell=25*Point;
 

Как лучше:

- указывать в советнике на каких парах и каком периоде торговать

или

- накидывать советника на график валютной пары с нужным выставленным периодом

??

 

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

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

 
По-моему,второй вариант много практичнее и удобнее.А там,как удобнее вам лично.К чему вообще спрашивать?
 

что бы определится и остановится на выбранном решении.

либо просто советника накидывать на нужные валютные пары, либо сразу написать под определенные валютные пары.

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

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

 
Понял.Очень толково. Я конечно не спец,но второй вариант много проще.
 
Пожалуста,помогите!Эксперт не работает,не торгует совсем.Не заключает сделки.
Причина обращения: