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

 

всеравно открывает пачкой этот ордер

вот как стоят у меня переменые в експерте

extern int TakeProfit=18;
extern int StopLoss=18;
extern double Lot=0.01;
extern int StartTime=0;
int Today=0;
int h=10;
int h1=26;
int mag=777;
bool b=0,s=0, //соответственно бай или селл  
bs=0,// если закрытие по стоплоссу ордера бай
ss=0,// если закрытие по стоплоссу ордера sell
bt=0,
st=0;//      то же по ТП
double bl=0,sl=0; // лоты соответсвенно для бай и селл

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{


if(DayOfWeek()==0 || DayOfWeek()==6) return(0); // в выходные не работаем
if(!IsTradeAllowed()) return(0); // пропустим тик если терминал занят
int total = OrdersTotal();
if(total == 0)



   {NewOrder(OP_BUY,Lot);
    NewOrder(OP_SELL,Lot);
    NewOrder(OP_BUYLIMIT,Lot);
    NewOrder(OP_SELLLIMIT,Lot);
    NewOrder(OP_BUYSTOP,Lot);
    NewOrder(OP_SELLSTOP,Lot);
    Today=TimeDay(TimeCurrent());}
    
{



for(int cnt=OrdersHistoryTotal();cnt>0;cnt--)
     {
OrderSelect(cnt, SELECT_BY_POS, MODE_HISTORY);
{if(OrderMagicNumber()== mag &&
OrderSymbol()==Symbol()) 
{ if (OrderType() == OP_BUY )  {b=1; if (OrderClosePrice()==OrderTakeProfit()) bt=1;
if (OrderClosePrice()==OrderStopLoss()) bs=1; bl=OrderLots()*100; break;}
if (OrderType() == OP_SELL)  {s=1; if (OrderClosePrice()==OrderTakeProfit()) st=1; 
if (OrderClosePrice()==OrderStopLoss()) ss=1; sl=OrderLots()*100; break;}
            }
         }
      }


}//end

if(bs==1||bl==1)
{   
    NewOrder1(OP_BUYLIMIT,Lot);
Today=TimeDay(TimeCurrent());}
    

а вот открытие ордера

int NewOrder1(int Cmd,double Lot)
{double TP=0; //тейкпрофит
double SL=0; //стоплосс
double PR=0; //Цена
double LT=0; //Лот
while(!IsTradeAllowed()) Sleep(100);
if(Cmd==OP_BUYLIMIT)
   {PR=Ask-Point*h;
    if(TakeProfit>0) TP=PR+TakeProfit*Point;
    if(StopLoss>0) SL=PR-StopLoss*Point;
    if(Lot>0) LT=3*Lot;}
int tic1=OrderSend(Symbol(),Cmd,LT,PR,3,SL,TP,0,mag,0,CLR_NONE);
//-----------
if(tic1<0) Print(GetLastError());

if(tic1>0){
b=0;s=0; //соответственно бай или селл  
bs=0;// если закрытие по стоплоссу ордера бай
ss=0;// если закрытие по стоплоссу ордера sell
bt=0;
st=0;//      то же по ТП
bl=0;sl=0; // лоты соответсвенно для бай и селл
}
//-----------
return(tic1);}
 
profitinvesting:

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

Заранее спасибо за ответ:)

На сайте Игоря Кима http://www.kimiv.ru найдете эту и много других полезных функций. А нужная Вам именуется MovingInWL(), если не ошибаюсь.
 
ToLik_SRGV:

Борис, ну так это же еще проще. Бросаете эту строчку:

В самых верх кода (чтобы была отдельно, а не в какой либо функции).
А далее в тех местах, где есть вызов функции OrderSend(...), просто заключаете ее в дополнительные объятия оператора if

Теперь перед открытием очередной сделки, будет происходить проверка, происходили на текущем баре сделки или нет. Если они были, то текущий бар был запомнен в переменной new, и если текущий бар, совпадает с сохраненным, то сделка открыта не будет. Соответственно если бар новый, то его время открытия не совпадет с данными переменно new, сделка откроется, переменная new, получит новое значение.

Точно не знаю архитектуру вашего эксперта, но данный способ должен работать в большинстве случаев.


Огромное Вам спасибо! Подошло отлично!
 

Не соображу, как лучше поступить.

Есть индикатор, с кучкой массивов. Второму индикатору надо с этими массивами поработать.  Посчитать и результат вывести в свою таблицу.

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

Как добраться до чужих массивов? 

 
Abzasc:

Не соображу

Сообразил.
 
LAIT123:

Здраствуйте подскажите пожалуста как логи посмотреть в МТ4

Не надо 15 постов с одним содержим создавать. А если получилось, то желательно за собой почистить. Не ждать дяденек.
 
artmedia70:

Наверное ну очень нужно... :) Или мышку заело...



Это не мышку заело. Это нетерпение. Я 20 минут 15 постов в итоге удалял.
 
Vinin:

  Это не мышку заело.  
Он думал, тут чат :)
 
FoxUA:

всеравно открывает пачкой этот ордер

вот как стоят у меня переменые в експерте

а вот открытие ордера

Вообще не пойму как оно у вас себя чуйствует... Фигурные скобки друг дружке не соответствуют, одна закрывающая вообще потеряна... Сам чёрт ногу сломит. Приведите в порядок свой код... тяжело с ним разбираться, а компилировать и запускать нет возможности - свои коды отрабатываем-с...
 
Vinin:

Это не мышку заело. Это нетерпение. Я 20 минут 15 постов в итоге удалял.
:) Нетерпение обычно тренируют в другом кабинете... :)