Ответ
 
Опции темы
Старый 30.03.2015, 14:33   #3721 (permalink)
Интересующийся
 
Аватар для Sobolh
 
Регистрация: 22.03.2015
Сообщений: 5
Репутация: 1
Sobolh
Сказал(а) спасибо: 3
Поблагодарили 0 раз(а) в 0 сообщениях
Поинты: 6
Пробую так, но не получается ошибка - ( - constant expression required)

double A,B,C,D,E; // Глобальные переменные
//--------------------

double num_array[5]={A,B,C,D,E};
int maxValueIdx=ArrayMaximum(num_array,WHOLE_ARRAY,0);
Alert("Max value = ",num_array[maxValueIdx]," at index=",maxValueIdx);
Sobolh вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 30.03.2015, 17:12   #3722 (permalink)
Местный житель
 
Аватар для svitanak
 
Регистрация: 18.07.2011
Сообщений: 163
Репутация: 298
svitanak svitanak svitanak
Сказал(а) спасибо: 234
Поблагодарили 297 раз(а) в 82 сообщениях
Поинты: 200
здравствуйте уважаемые программисты. возможно ли написать "шаблон"- сову с не сложным алгоритмом, но чтобы она брала сигнал на открытие ордера с индикатора, брошенного на график. то есть чтобы не переписывать сову под каждый индикатор, а чтобы проверить его пригодность в сове простым "вешанием " на график. то есть появилась стрелка - открылся ордер, не важно какая и с какого индикатора.
пс. прошу прощения, может вопрос глупый, так как с программированием не очень знаком.
svitanak вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 30.03.2015, 17:35   #3723 (permalink)
Местный знаток
 
Аватар для gince
 
Регистрация: 09.09.2008
Адрес: Литва
Сообщений: 396
Репутация: 733
gince - gince - gince - gince - gince - gince - gince -
Сказал(а) спасибо: 178
Поблагодарили 733 раз(а) в 189 сообщениях
Поинты: 192
Отправить сообщение для gince с помощью Skype™
Помогите с индикатором. Пост #3707 на прошлой странице.
Прикладываю скрин.
Описание скрина.
1,1 - цена выше ББ и следующий бар медвежий

Скрытый текст

if(UpBB<High[i+1] && Open[i+1]<Close[i+1] && Open[i+0]>Close[i+0]){
UpIntBB[i]=1; //запоминаем
DnIntBB[i]=0;
}
[свернуть]

1,2 - ждем пересечения с верху в низ НОЛЬ в подвальном индикаторе

Скрытый текст

if(UpIntBB[i]==1 && ELR0<0 && ELR1>0){
UpArrowBB[i]=High[i]+v_shift0*Point;//рисуем стрелку
UpIntBB[i]=0;
[свернуть]

2,1 3,1 4,1 5,1 не имеют потверждающих сигналов в подвальном индикаторе

Дальше должно быть понятно.

Голубая стрелка по условию 1,1. Она в новом индикаторе не нужна. Фиолетовая стрелка - я ее хочу видеть в новом индикаторе.
Миниатюры:
Нажмите на изображение для увеличения
Название: ind.PNG
Просмотров: 23
Размер:	46.7 Кб
ID:	201177  

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Гинтарас

Последний раз редактировалось gince; 30.03.2015 в 17:42.
gince вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 30.03.2015, 17:46   #3724 (permalink)
Местный знаток
 
Аватар для gince
 
Регистрация: 09.09.2008
Адрес: Литва
Сообщений: 396
Репутация: 733
gince - gince - gince - gince - gince - gince - gince -
Сказал(а) спасибо: 178
Поблагодарили 733 раз(а) в 189 сообщениях
Поинты: 192
Отправить сообщение для gince с помощью Skype™
В добавок два индикатора. Это с них двоих хочу сделать один.
Со второго индикатора только по одному меньшему ББ.
Вложения:
Тип файла: mq4 gi_ELR_Color.mq4 (3.4 Кб, 9 просмотров)
Тип файла: mq4 gi_2BB Arows.mq4 (6.5 Кб, 7 просмотров)

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Гинтарас
gince вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 31.03.2015, 03:17   #3725 (permalink)
Почётный гражданин
 
Аватар для matro3
 
Регистрация: 18.07.2013
Сообщений: 349
Репутация: 344
matro3 matro3 matro3 matro3
Сказал(а) спасибо: 25
Поблагодарили 340 раз(а) в 143 сообщениях
Поинты: 160
Сообщение от Sobolh Посмотреть сообщение
Пробую так, но не получается ошибка - ( - constant expression required)

double A,B,C,D,E; // Глобальные переменные
//--------------------

double num_array[5]={A,B,C,D,E};
int maxValueIdx=ArrayMaximum(num_array,WHOLE_ARRAY,0);
Alert("Max value = ",num_array[maxValueIdx]," at index=",maxValueIdx);
Размер массива 4, а не 5.
matro3 вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Sobolh (31.03.2015)
Старый 02.04.2015, 20:22   #3726 (permalink)
Почётный гражданин
 
Аватар для Алекс34
 
Регистрация: 20.08.2012
Адрес: Волгоград
Сообщений: 493
Репутация: 409
Алекс34 - Алекс34 - Алекс34 - Алекс34 - Алекс34 -
Сказал(а) спасибо: 295
Поблагодарили 408 раз(а) в 185 сообщениях
Поинты: 297
Отправить сообщение для Алекс34 с помощью ICQ Отправить сообщение для Алекс34 с помощью Skype™
Код HTML:
if (ExtMapBuffer1[shift]= Low[shift]-7*Point && ExtMapBuffer1[0] != 0 && SoundBuy)
         {
         SoundBuy = true;
            if (UseSound) PlaySound (SoundFile);
               Alert("Dserg(", Symbol(), ", ", Period(), ")  -  BUY!!!"); 
         } 
      if (!SoundBuy && (ExtMapBuffer1[shift]= Low[shift]-7*Point || ExtMapBuffer1[0] == 0)) SoundBuy = True;
      if (ExtMapBuffer2[shift] = High[shift]+7*Point && ExtMapBuffer2[0] != 0 && SoundSell)
         {
         SoundSell = true;
            if (UseSound) PlaySound (SoundFile);
             Alert("Dserg (", Symbol(), ", ", Period(), ")  -  SELL!!!"); 
         } 
      if (!SoundSell && (ExtMapBuffer2[0]= High[0]+7*Point || ExtMapBuffer2[0] == 0)) SoundSell = True;
В чем ошибка?
Алекс34 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 03.04.2015, 03:35   #3727 (permalink)
Почётный гражданин
 
Аватар для matro3
 
Регистрация: 18.07.2013
Сообщений: 349
Репутация: 344
matro3 matro3 matro3 matro3
Сказал(а) спасибо: 25
Поблагодарили 340 раз(а) в 143 сообщениях
Поинты: 160
Сообщение от Алекс34 Посмотреть сообщение
Код HTML:
if (ExtMapBuffer1[shift]= Low[shift]-7*Point && ExtMapBuffer1[0] != 0 && SoundBuy)
         {
         SoundBuy = true;
            if (UseSound) PlaySound (SoundFile);
               Alert("Dserg(", Symbol(), ", ", Period(), ")  -  BUY!!!"); 
         } 
      if (!SoundBuy && (ExtMapBuffer1[shift]= Low[shift]-7*Point || ExtMapBuffer1[0] == 0)) SoundBuy = True;
      if (ExtMapBuffer2[shift] = High[shift]+7*Point && ExtMapBuffer2[0] != 0 && SoundSell)
         {
         SoundSell = true;
            if (UseSound) PlaySound (SoundFile);
             Alert("Dserg (", Symbol(), ", ", Period(), ")  -  SELL!!!"); 
         } 
      if (!SoundSell && (ExtMapBuffer2[0]= High[0]+7*Point || ExtMapBuffer2[0] == 0)) SoundSell = True;
В чем ошибка?
В первом условии SoundBuy и так true, если заходит в условие, зачем ему присваивать true?
Аналогично SoundSell.
Что именно не получается?
matro3 вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Алекс34 (03.04.2015)
Старый 03.04.2015, 04:13   #3728 (permalink)
Активный участник
 
Аватар для _SERG_
 
Регистрация: 21.07.2009
Сообщений: 242
Репутация: 75
_SERG_
Сказал(а) спасибо: 7
Поблагодарили 75 раз(а) в 61 сообщениях
Поинты: 284
Сообщение от Алекс34 Посмотреть сообщение
Код HTML:
if (ExtMapBuffer1[shift]= Low[shift]-7*Point && ExtMapBuffer1[0] != 0 && SoundBuy)
         {
         SoundBuy = true;
            if (UseSound) PlaySound (SoundFile);
               Alert("Dserg(", Symbol(), ", ", Period(), ")  -  BUY!!!"); 
         } 
      if (!SoundBuy && (ExtMapBuffer1[shift]= Low[shift]-7*Point || ExtMapBuffer1[0] == 0)) SoundBuy = True;
      if (ExtMapBuffer2[shift] = High[shift]+7*Point && ExtMapBuffer2[0] != 0 && SoundSell)
         {
         SoundSell = true;
            if (UseSound) PlaySound (SoundFile);
             Alert("Dserg (", Symbol(), ", ", Period(), ")  -  SELL!!!"); 
         } 
      if (!SoundSell && (ExtMapBuffer2[0]= High[0]+7*Point || ExtMapBuffer2[0] == 0)) SoundSell = True;
В чем ошибка?
Вместо "=" в условии используется "==".
if (ExtMapBuffer1[shift]== Low[shift]-7*Point && ExtMapBuffer1[0] != 0 && SoundBuy)
Дальше по аналогии.

Последний раз редактировалось _SERG_; 03.04.2015 в 04:15.
_SERG_ вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Алекс34 (03.04.2015)
Старый 03.04.2015, 07:26   #3729 (permalink)
Активный участник
 
Аватар для vladradon
 
Регистрация: 12.02.2015
Сообщений: 104
Репутация: 37
vladradon
Сказал(а) спасибо: 23
Поблагодарили 37 раз(а) в 25 сообщениях
Поинты: 168
Сообщение от ViMax Посмотреть сообщение
Возможно я не так выразился....
Мне нужно, что бы советник работал, после того как проверит, что MagicNumer во "входных параметрах" введен верно. А проверка происходит по типу:
if MagicNumber=AccountNumber*2-12345
Т.е. получается, что MagicNumber, будет для разных счетов, разный.
Если я правильно понял:
if (MagicNumber!=AccountNumber()*2-12345) return(0);
и эту строчку нужно поставить первой в функции int start() или, если void start() или void OnTick (), то
if (MagicNumber!=AccountNumber()*2-12345) return;
и если меджик не будет совпадать, то дальше сов работать не будет.
Или вообще выгрузить сова:
if (MagicNumber!=AccountNumber()*2-12345) ExpertRemove();

Последний раз редактировалось vladradon; 03.04.2015 в 07:30.
vladradon на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 03.04.2015, 08:59   #3730 (permalink)
Почётный гражданин
 
Аватар для Алекс34
 
Регистрация: 20.08.2012
Адрес: Волгоград
Сообщений: 493
Репутация: 409
Алекс34 - Алекс34 - Алекс34 - Алекс34 - Алекс34 -
Сказал(а) спасибо: 295
Поблагодарили 408 раз(а) в 185 сообщениях
Поинты: 297
Отправить сообщение для Алекс34 с помощью ICQ Отправить сообщение для Алекс34 с помощью Skype™
Спасибо за помощь. Не получается алерт в индюк поставить. я не прогер, но хотел сам этот момент изучить. нефига не выходит.
вот код с уже моими дополнениями.весь код не получилось загрузить (большой). индюк в оригинале во вложении
Код HTML:
#property copyright "Nikelodeon"
#property link      ""

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Red
//---- input parameters
extern bool       lines=true;
extern int       step=500;
extern bool       Dell=true;
extern int shift=1;      // На каком баре считать сигнал 0 - на текущем 1 - на закрытом
extern string SoundFile="Alert.wav";
extern bool UseSound=true;
bool SoundBuy  = False;
bool SoundSell = False;


//----buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[]; 
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0,108);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexEmptyValue(0,0.0);
   SetIndexLabel(0,"BUY Signal");
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexArrow(1,108);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexEmptyValue(1,0.0);
   SetIndexLabel(1,"SELL Signal");
//----
	ObjectsDeleteAll(0,OBJ_TEXT);
	ObjectsDeleteAll(0,OBJ_ARROW);
	ObjectsDeleteAll(0,OBJ_TREND);
	//DelArrow(0,0);
	 
   return(0);

  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
 ObjectsDeleteAll(0,OBJ_TEXT);
ObjectsDeleteAll(0,OBJ_ARROW);  
ObjectsDeleteAll(0,OBJ_TREND);  
//----
   return(0);
  }

//+------------------------------------------------------------------+
//SetArrow(t[shift1],l[shift1]-15*Point,241,LIME);
void SetArrow(int sh, datetime tm, double pr, int cod,color clr)
{
	ObjectCreate("Arrow-"+sh,OBJ_ARROW,0,tm,pr);
	ObjectSet("Arrow-"+sh,OBJPROP_ARROWCODE,cod);
	ObjectSet("Arrow-"+sh,OBJPROP_COLOR,clr);
}
void SetArrow1(int sh, datetime tm, double pr, int cod,color clr)
{
	ObjectCreate("Arrow+"+sh,OBJ_ARROW,0,tm,pr);
	ObjectSet("Arrow+"+sh,OBJPROP_ARROWCODE,cod);
	ObjectSet("Arrow+"+sh,OBJPROP_COLOR,clr);
}

//SetText(t[shift1],l[shift1]-28*Point,"Engulfing",LIME);
void SetText(int sh,datetime tm,double pr,string text,color clr)
{
	ObjectCreate("x"+sh,OBJ_TEXT,0,tm,pr);
	ObjectSetText("x"+sh,text);
	ObjectSet("x"+sh,OBJPROP_COLOR,clr);
}
void SetText1(int sh,datetime tm,double pr,string text,color clr)
{
	ObjectCreate("y"+sh,OBJ_TEXT,0,tm,pr);
	ObjectSetText("y"+sh,text);
	ObjectSet("y"+sh,OBJPROP_COLOR,clr);
}

void Setline(int sh,datetime tm,double pr,datetime tm1,double pr1, color clr)
{
	ObjectCreate("-"+sh,OBJ_TREND,0,tm,pr,tm1,pr1,clr);
	ObjectSet("-"+sh,7,STYLE_SOLID);
	ObjectSet("-"+sh,10,false);
	ObjectSet("-"+sh,6,Yellow);
}
void Setline1(int sh,datetime tm,double pr,datetime tm1,double pr1, color clr)
{
	ObjectCreate("+"+sh,OBJ_TREND,0,tm,pr,tm1,pr1,clr);
	ObjectSet("+"+sh,7,STYLE_SOLID);
	ObjectSet("+"+sh,10,false);
	ObjectSet("+"+sh,6,LightBlue);
}                              
// Tampilkan disaat ada konfirmasi.
		
		StartBar-=1;
	}
	
//Comment(p3[1],p3[2],p3[3],p3[4],p3[5],p3[6],p3[7],)	;
//Comment(x1[1],x1[2],x1[3],x1[4],x1[5],x1[6],x1[7],)	;                       
//+------------------------------------------------------------------+ 
if (ExtMapBuffer1[0] = Low[shift]-7*Point && ExtMapBuffer1[0] != 0  && SoundBuy)
         {
         SoundBuy = false;
            if (UseSound) PlaySound (SoundFile);
               Alert("Dserg(", Symbol(), ", ", Period(), ")  -  BUY!!!"); 
         } 
      if (!SoundBuy && (ExtMapBuffer1[0]== Low[0]-7*Point || ExtMapBuffer1[0] == 0)) SoundBuy = True;
      if (ExtMapBuffer2[0] = High[0]+7*Point && ExtMapBuffer2[0] != 0 && SoundSell)
         {
         SoundSell = false;
            if (UseSound) PlaySound (SoundFile);
             Alert("Dserg (", Symbol(), ", ", Period(), ")  -  SELL!!!"); 
         } 
      if (!SoundSell && (ExtMapBuffer2[0]== High[0]+7*Point || ExtMapBuffer2[0] == 0)) SoundSell = True;
 //+------------------------------------------------------------------+      
   return(0);
}
Вложения:
Тип файла: mq4 CANDLESTICK.mq4 (14.6 Кб, 9 просмотров)
Алекс34 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 03.04.2015, 09:03   #3731 (permalink)
Почётный гражданин
 
Аватар для Алекс34
 
Регистрация: 20.08.2012
Адрес: Волгоград
Сообщений: 493
Репутация: 409
Алекс34 - Алекс34 - Алекс34 - Алекс34 - Алекс34 -
Сказал(а) спасибо: 295
Поблагодарили 408 раз(а) в 185 сообщениях
Поинты: 297
Отправить сообщение для Алекс34 с помощью ICQ Отправить сообщение для Алекс34 с помощью Skype™
И вот момент в коде. может именно здесь для алерта функцию искать?
Код HTML:
//подтверждение		
			if( (BullEngulf || BullPierce || MorningStar || BullHarami || BullCross ) && 
				(Close[shift]>Close[shift1])&& Close[shift]>Open[shift1]){
//			ExtMapBuffer1[shift] = Low[shift]-7*Point;
			Name=true;
			Arrow=true;
			}
		else 
			{ExtMapBuffer1[shift] = 0.0; Name=false; Arrow=false; }

		if( (BearEngulf || DarkCloud || EveningStar || Shooter || BearHarami || BearCross) && 
				(Close[shift]<Close[shift1])&& Close[shift]<Open[shift1]){
//			ExtMapBuffer2[shift] = High[shift]+7*Point;
			Name1=true;
			Arrow1=true;
			}
		else 
			{ExtMapBuffer2[shift] = 0.0; Name1=false; Arrow1=false;}
			
      //Подтверждение молота отдельно
      
         if (Hammer){ 
            if ((down))  {Name=true;
                          Arrow=true;UseSound=true;}
  //                        ExtMapBuffer1[shift] = Low[shift]-7*Point;}
            else {Name=false; Arrow=false;}
            if ((up)) {Name1=true;
                       Arrow1=true;UseSound=true;}
                       
     //		           ExtMapBuffer2[shift] = High[shift]+7*Point;}
            else {Name1=false; Arrow1=false;}
         }
Алекс34 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 03.04.2015, 11:33   #3732 (permalink)
Почётный гражданин
 
Аватар для Алекс34
 
Регистрация: 20.08.2012
Адрес: Волгоград
Сообщений: 493
Репутация: 409
Алекс34 - Алекс34 - Алекс34 - Алекс34 - Алекс34 -
Сказал(а) спасибо: 295
Поблагодарили 408 раз(а) в 185 сообщениях
Поинты: 297
Отправить сообщение для Алекс34 с помощью ICQ Отправить сообщение для Алекс34 с помощью Skype™
Сделал такой вариант. ошибок нет как и алерта(((
Вложения:
Тип файла: mq4 CANDLESTICK11.mq4 (17.0 Кб, 2 просмотров)
Алекс34 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 03.04.2015, 17:39   #3733 (permalink)
Интересующийся
 
Аватар для Expresso
 
Регистрация: 31.07.2013
Сообщений: 5
Репутация: 3
Expresso
Сказал(а) спасибо: 0
Поблагодарили 2 раз(а) в 2 сообщениях
Поинты: 2
Здроаствуйте господа програмисты! прошу помощи.! как сделать в сове стоплос, который выставляется на 30 пунктов ниже Low предыдущей свечи, так чтобы после этого трейлинг стоп работал! я как бы не програмист но потихоньку учусь сам. вот сделал сову по стратегии. но не совсем стоп выставляется правильно по тс. я сам делал что сто равен Low[1]-st но тогда не тралится позиция правильно, трал стоп в сторону убытка на 1000 пунктов переставляет и всё. а так без этого с обычным стопом трал работает. вот кстати стейт за последние пару месяцев с тестера. кто поможет поделюсь совом.
Expresso вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 03.04.2015, 17:40   #3734 (permalink)
Интересующийся
 
Аватар для Expresso
 
Регистрация: 31.07.2013
Сообщений: 5
Репутация: 3
Expresso
Сказал(а) спасибо: 0
Поблагодарили 2 раз(а) в 2 сообщениях
Поинты: 2
Нажмите на изображение для увеличения
Название: StrategyTester.gif
Просмотров: 3
Размер:	8.3 Кб
ID:	201794
вот отчёт полный
Expresso вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 03.04.2015, 18:17   #3735 (permalink)
Почётный гражданин
 
Аватар для Алекс34
 
Регистрация: 20.08.2012
Адрес: Волгоград
Сообщений: 493
Репутация: 409
Алекс34 - Алекс34 - Алекс34 - Алекс34 - Алекс34 -
Сказал(а) спасибо: 295
Поблагодарили 408 раз(а) в 185 сообщениях
Поинты: 297
Отправить сообщение для Алекс34 с помощью ICQ Отправить сообщение для Алекс34 с помощью Skype™
Нашел с алертом. здесь на форуме
Алекс34 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 04.04.2015, 04:44   #3736 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,525
Репутация: 3645
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,113
Поблагодарили 3,649 раз(а) в 1,470 сообщениях
Поинты: 2007
Сообщение от Expresso Посмотреть сообщение
Здроаствуйте господа програмисты! прошу помощи.! как сделать в сове стоплос, который выставляется на 30 пунктов ниже Low предыдущей свечи, так чтобы после этого трейлинг стоп работал! я как бы не програмист но потихоньку учусь сам. вот сделал сову по стратегии. но не совсем стоп выставляется правильно по тс. я сам делал что сто равен Low[1]-st но тогда не тралится позиция правильно, трал стоп в сторону убытка на 1000 пунктов переставляет и всё. а так без этого с обычным стопом трал работает. вот кстати стейт за последние пару месяцев с тестера. кто поможет поделюсь совом.
Выложи свой вариант трала и поможем тебе безвозмездно.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 04.04.2015, 20:21   #3737 (permalink)
Активный участник
 
Аватар для _Fatal_
 
Регистрация: 09.07.2010
Сообщений: 308
Репутация: 102
_Fatal_ _Fatal_
Сказал(а) спасибо: 91
Поблагодарили 104 раз(а) в 59 сообщениях
Поинты: 60
привет пипл, скажите что не так в этом коде, не хочет динамический лот выставлять, пишет invalid lots amount for OrderSend function
OrderSend error 4051

//--------------------------------------------------------------------Определение величины лота
if(FixLot==true)
{
Lot=lotf;
}
if(FixLot==false)
{
Blc=AccountBalance();
MinLot = MarketInfo( Pair,MODE_MINLOT);
MaxLot = MarketInfo( Pair,MODE_MAXLOT);
if(MinLot==0.1)
{
MnLot2 = MnLot1/100;
}
if(MinLot==0.01)
{
MnLot2 = MnLot1/10;
}
MnLot1 = prc*Blc/100;
Lot=MnLot2*MinLot;
if(Lot>MaxLot)
{
Lot = MaxLot;
}
}
_Fatal_ вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 04.04.2015, 20:53   #3738 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,255
Репутация: 1963
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 349
Поблагодарили 1,892 раз(а) в 1,069 сообщениях
Поинты: 1276
Отправить сообщение для Ugar с помощью ICQ
А сам то считал что получается? Или хотя бы принтовал значения переменных?
Не совсем ясно что за переменные. Если MnLot1 обычная локальная переменная.
То её значение =0 пока не назначено иное. Подставь значение в формулы.
MnLot2 = MnLot1/100; MnLot2 = 0/100=0;
MnLot2 = MnLot1/10; MnLot2 = 0/10=0;
Значит по любому MnLot2=0
Дальше считается лот Lot=MnLot2*MinLot; Lot=0*MinLot=0;
Итого результат плясок с бубном 0 лот.

Для начала надо формулу где считается значение MnLot1 = prc*Blc/100;поместить до строчки где это значение используется впервые. Кроме того желательно нормировать по человечьи.
Если попроще, как то так
min=MarketInfo(Symbol(),MODE_MINLOT);
max=MarketInfo(Symbol(),MODE_MAXLOT);
step=MarketInfo(Symbol(),MODE_LOTSTEP);
double lots=MathRound(lot/step)*step;
lots=MathMax(lots,min);
lots=MathMin(lots,max);

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!

Последний раз редактировалось Ugar; 04.04.2015 в 20:57.
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
_Fatal_ (05.04.2015)
Старый 05.04.2015, 01:59   #3739 (permalink)
Активный участник
 
Аватар для vladradon
 
Регистрация: 12.02.2015
Сообщений: 104
Репутация: 37
vladradon
Сказал(а) спасибо: 23
Поблагодарили 37 раз(а) в 25 сообщениях
Поинты: 168
Сообщение от _Fatal_ Посмотреть сообщение
привет пипл, скажите что не так в этом коде, не хочет динамический лот выставлять, пишет invalid lots amount for OrderSend function
OrderSend error 4051

//--------------------------------------------------------------------Определение величины лота
if(FixLot==true)
{
Lot=lotf;
}
if(FixLot==false)
{
Blc=AccountBalance();
MinLot = MarketInfo( Pair,MODE_MINLOT);
MaxLot = MarketInfo( Pair,MODE_MAXLOT);
if(MinLot==0.1)
{
MnLot2 = MnLot1/100;
}
if(MinLot==0.01)
{
MnLot2 = MnLot1/10;
}
MnLot1 = prc*Blc/100;
Lot=MnLot2*MinLot;
if(Lot>MaxLot)
{
Lot = MaxLot;
}
}
Нет нормализации лотов и расчет MnLot1 стоит после всех вычислений:
if(FixLot==false)
{
int Dig;
Blc=AccountBalance();
MnLot1 = prc*Blc/100;
MinLot = MarketInfo( Pair,MODE_MINLOT);
MaxLot = MarketInfo( Pair,MODE_MAXLOT);
if(MinLot==0.1)
{
MnLot2 = MnLot1/100;
Dig=1;
}
if(MinLot==0.01)
{
MnLot2 = MnLot1/10;
Dig=2;
}
Lot=NormalizeDouble(MnLot2*MinLot,Dig);
}
if(Lot>MaxLot)
{
Lot = MaxLot;
}

Последний раз редактировалось vladradon; 05.04.2015 в 02:19.
vladradon на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
_Fatal_ (05.04.2015)
Старый 05.04.2015, 18:34   #3740 (permalink)
Почётный гражданин
 
Аватар для Yurkov
 
Регистрация: 19.01.2011
Сообщений: 643
Репутация: 359
Yurkov - Yurkov - Yurkov - Yurkov -
Сказал(а) спасибо: 163
Поблагодарили 356 раз(а) в 166 сообщениях
Поинты: 200
Добрый вечер!
Подкиньте, пожалуйста, кусок кода, которым можно ограничить торговлю советника в определенный месяц.
Yurkov на форуме   Ответить с цитированиемОтветить с цитированием  
Ответ

Метки
mql4, mql4 помощь, вопросы mql4


Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 04:00. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.
SEO by vBSEO