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

 
cyclik33:


Я вам ответил, почему код не работает как надо - вы его прописали совсем не туда, куда надо... :) Думаю, если открутить колёса и положить в багажник, то далеко не уедите, хотя вроде как и колёса в наличии и дверки закрываются... :)
 
T-G:

вопрос может банальный, советник торгует на М1, поступил сигнал на открытие ордера, предположим стоп короткий и ордер закрылся по сл. но условие на открытие все еще есть.

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

Проверять открытие новой свечи. Если новая - открываетесь, если старая - нет...
 
ToLik_SRGV:

Cчет номеров в функции OrderSelect() начинается с нуля. А у вас 1, то есть вы ищете второй ордер, хотя в рынке у вас только один, поэтому и не работает.

Спасибо, забыл.
 
ToLik_SRGV:

Борис, небольшая поправка в коде, забыл добавить сброс позиции массива, при возврату к первоначальному лоту:

 


Толик подскажите пожалуйста, он у меня чего-то странно работает.  После убыточной может может открыть первоначальный лот, если и эта убыточная то еще раз первоначальный. 

А иногда после первой- же убыточной отрывает 0.4.

Навверно я что-то не туда засунул?  

 
cyclik33:


Толик подскажите пожалуйста, он у меня чего-то странно работает.  После убыточной может может открыть первоначальный лот, если и эта убыточная то еще раз первоначальный. 
А иногда после первой- же убыточной отрывает 0.4.
Навверно я что-то не туда засунул?  

Борис, небольшая поправка в коде, забыл добавить сброс позиции массива, при возврату к первоначальному лоту:

//+------------------------------------------------------------------+
double getMartinLot(double lot, double arrayLot[]){//ФУНКЦИЯ УПРАВЛЕНИЯ ОБъЕМОМ ТОРГОВ ПО СИСТЕМЕ МАРТИНГЕЙЛА
   static double balance_before, balance_after;    //ДЛЯ ХРАНЕНИЯ СОСТОЯНИЯ БАЛАНСА ДО И ПОСЛЕ СДЕЛОК
   static double save_Lot;   
   static int loop;
   if(loop == ArraySize(arrayLot))loop = 0;   
   balance_after = AccountBalance();               //СОХРАНЕНИЕ ТЕКУЩЕГО СОСТОЯНИЯ БАЛАНСА   
   if(balance_after >= balance_before){            //ПРОВЕРКА ИЗМЕНЕНИЯ БАЛАНСА
      save_Lot = lot;                              //ЕСЛИ ОН НЕ ИЗМЕНИЛСЯ ИЛИ СТАЛ БОЛЬШЕ, ТО СБРАСЫВАЕМ ЛОТ ДО БАЗОВОГО
      loop = 0;
   }else{
      save_Lot = arrayLot[loop];                   //ЕСЛИ СТАЛ МЕНЬШЕ ТО УВЕЛИЧИВАЕМ ЛОТ
      loop++;
   }
   balance_before = balance_after;                 //СОХРАНЯЕМ СОСТОЯНИЕ БАЛАНСА ПОСЛЕ РАБОТЫ
   return(save_Lot);
}
//+------------------------------------------------------------------+
 
artmedia70:
Я вам ответил, почему код не работает как надо - вы его прописали совсем не туда, куда надо... :) Думаю, если открутить колёса и положить в багажник, то далеко не уедите, хотя вроде как и колёса в наличии и дверки закрываются... :)


Абсолютно с Вами согласен. Но ведь я ни капли не критиковал Ваш код, а просто сказал что у меня с ним возникли проблеммы ), кстати у меня с ним опять возникла проблемма если не трудно - подскажите что не так, уж больно хочется разобраться что я не так делаю.

extern color colorOpenBuy = Blue;
extern color colorCloseBuy = Aqua;
extern color colorOpenSell = Red;
extern color colorCloseSell = Aqua;


void deinit() {
Comment("");
}

double Lots_New = Lot;


//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+

int start(){
if (lFlagUseHourTrade){
if (!(Hour()>=nFromHourTrade && Hour()<=nToHourTrade)) {
Comment("Time for trade has not come else!");
return(0);
 

 

 

 

Вставил сюда, как Вы велели, до функции Старт, но при компиляции пишет 'Lot' - initialization expected D:\MetaTrader\experts\Prostoj_2.mq4 (39, 20)

Подскажите пожалуйста что это может быть.

 

 
artmedia70:
Проверять открытие новой свечи. Если новая - открываетесь, если старая - нет...
а как это лучше сделать?
 
cyclik33:


Абсолютно с Вами согласен. Но ведь я ни капли не критиковал Ваш код, а просто сказал что у меня с ним возникли проблеммы ), кстати у меня с ним опять возникла проблемма если не трудно - подскажите что не так, уж больно хочется разобраться что я не так делаю.

extern color colorOpenBuy = Blue;
extern color colorCloseBuy = Aqua;
extern color colorOpenSell = Red;
extern color colorCloseSell = Aqua;


void deinit() {
Comment("");
}

double Lots_New = Lot;


//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+

int start(){
if (lFlagUseHourTrade){
if (!(Hour()>=nFromHourTrade && Hour()<=nToHourTrade)) {
Comment("Time for trade has not come else!");
return(0);

Вставил сюда, как Вы велели, до функции Старт, но при компиляции пишет 'Lot' - initialization expected D:\MetaTrader\experts\Prostoj_2.mq4 (39, 20)

Подскажите пожалуйста что это может быть.

У вас Lot где инициализирована?

extern color colorOpenBuy = Blue;
extern color colorCloseBuy = Aqua;
extern color colorOpenSell = Red;
extern color colorCloseSell = Aqua;
extern double Lot = 0.1;
double Lots_New;

void deinit() {
Comment("");
}

//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+

int start(){
if (lFlagUseHourTrade){
if (!(Hour()>=nFromHourTrade && Hour()<=nToHourTrade)) {
Comment("Time for trade has not come else!");
return(0);

Далее только после проверки на лосей либо меняете Lots_New как и писалось раньше, либо присваиваете ей значение = Lot;

 

Да-с... С массивами у меня туго... Пытаюсь заполнить массив данными индюкатора, ма-а-а-ленькая функция поставила в бо-о-о-льшой тупик... Подскажите, что не так делаю?

double      TempIND[50]; 
void   SaveDataIND(double TempIND[], int nBars)
{
   ArrayResize(TempIND,nBars);
   for (int j=0; j<=nBars-1; j++)
      {
         TempIND[j]=iAD(NULL,PERIOD_M5,j);       // ЗДЕСЬ ОШИБКА array item cannot be assigned
         Print("TempIND[",j,"] = ",TempIND[j]);
      }

}

Вызываю так:

SaveDataIND(TempIND, 20);
Где собака порылась?
 
artmedia70:

Да-с... С массивами у меня туго... Пытаюсь заполнить массив данными индюкатора, ма-а-а-ленькая функция поставила в бо-о-о-льшой тупик... Подскажите, что не так делаю?

Вызываю так:

Где собака порылась?



рылась твоя собака в передаче параметров в функцию, если ты передаешь как  SaveDataIND(double TempIND[])

то double TempIND[ ] это фактически новый массив для функции, но без права изменения параметров, попробуй SaveDataIND(double &TempIND[])

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