Спрашивайте! - страница 130

 
Dave137:

Сейчас оба цвета (цвета) 1 и 2 показывают "черный" на графике!!!

Может ли любой эксперт Гуру помочь мне решить эту проблему?

Заранее спасибо!

color Color1;

color Color2;

FerruFx

 

Пожалуйста, кто-нибудь может объяснить мне, как я могу избавиться от проблемы "OrderModify error 1". Я искал, и похоже, что мне нужно NormalizeDouble(), но я нормализовал все отсюда до луны и все равно получаю ошибку.

Когда я пойму это, я думаю, я смогу разобраться с этим, пожалуйста, может кто-нибудь помочь. спасибо.

Я также получаю "ошибку несопоставленных данных (превышен лимит объема 31 на 2008.04.16 07:30)", если кто-нибудь знает, в чем дело, буду благодарен за помощь.

 
FerruFx:
цвет Color1;

цвет Color2;

FerruFx

SetIndexStyle(0,DRAW_ARROW,0,star_size,color Color1);

SetIndexStyle(1,DRAW_ARROW,0,star_size,color Color2);

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

Это действительно сбивает меня с толку - Есть еще предложения?

Дэйв

 

@xerof123 - эта ошибка возникает, когда вы пытаетесь модифицировать ордер с теми же значениями, которые уже есть у открытого ордера. Другая проблема заключается в несовпадении цен между различными таймфреймами - чтобы избавиться от них, удалите и восстановите все тиковые данные через меню History Center.

@Dave137 - с чего бы начать, у вас color1, color2 определены как тип string, тогда как они имеют тип color. Обратите внимание, что ключевое слово 'color1' в определении 'properties' просто присваивает значение, поэтому, когда вы позже определите color1, color2, их можно будет с тем же успехом назвать c1,c2. Далее обратите внимание, что вам не нужно использовать 'properties color1' для начала, поскольку вы все равно задаете их вручную в функции init(). Также посмотрите в других индикаторах, как использовать '#property indicator buffers x' и 'indicatorbuffers(x)'...

 

Спасибо, омлет,

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

Пожалуйста, вы можете посмотреть на код и сказать мне, почему я получаю несчастную "OrderModify error 1".

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

Я очень ценю вашу помощь. Спасибо

for(int i=OrdersTotal()-1;i>=0;i--)

{

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)

{

if(OrderType()<=OP_SELL) ordtotal++;

if(OrderType()==OP_BUY)

{

if(bep==true && Bid-OrderOpenPrice()>=Locked_at*Point)

{

if(OrderModify(OrderTicket(),0,OrderOpenPrice()+7*Point,0,0,0)==true) bep=false;

return(0);

}

if((NormalizeDouble( Bid, Digits)-OrderOpenPrice())>=TS_start*Point)

{

if((NormalizeDouble( Bid, Digits)-NormalizeDouble( OrderStopLoss(), Digits)) > TS_start*Point &&

(NormalizeDouble( Bid, Digits)-NormalizeDouble( OrderStopLoss(), Digits) - TS_start*Point)>=(TrailEvery-1)*Point)

{

if (TS_start > OrderStopLoss()+Point)

{

OrderModify(OrderTicket(),OrderOpenPrice(), Ask - Point*TS_start ,0,0,SkyBlue);

return(0);

}

}

}

}

if(OrderType()==OP_SELL)

{

if(bep==true && OrderOpenPrice()-NormalizeDouble( Ask, Digits) >= Locked_at*Point)

{

if(OrderModify(OrderTicket(),0,OrderOpenPrice()-7*Point,0,0,0)==true) bep=false;

return(0);

}

if((OrderOpenPrice()-NormalizeDouble( Ask, Digits)) >= TS_start*Point)

{

if((NormalizeDouble( OrderStopLoss(), Digits)-NormalizeDouble( Ask, Digits)) > TS_start*Point &&

(NormalizeDouble( OrderStopLoss(), Digits)-NormalizeDouble( Ask, Digits)-TS_start*Point)>=(TrailEvery-1)*Point)

{

if (TS_start > OrderStopLoss() +Point)

{

OrderModify(OrderTicket(),OrderOpenPrice(), Ask + Point*TS_start ,0,0,Orange);

return(0);

}

}

}

}

}

}

 
Dave137:
SetIndexStyle(0,DRAW_ARROW,0,star_size,color Color1);

SetIndexStyle(1,DRAW_ARROW,0,star_size,color Color2);

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

Это действительно сбивает меня с толку - есть еще предложения?

Дэйв

Нет, вы делаете неправильные изменения.

Вы должны изменить это:

string Color1;

string Color2;

на это:

color Color1;

color Color2;

Вот и все.

FerruFx

 

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

#property copyright "ANG3110@latchess.com"

//----------------------------------

#property indicator_chart_window

//----------------------------------

extern int Hours=24;

extern color col=Aqua;

//------------------

double lr,lr0,lrp;

double sx,sy,sxy,sx2,aa,bb;

int p,sName,fs;

int f,f0,f1;

double dh,dl,dh_1,dl_1,dh_2,dl_2;

int ai_1,ai_2,bi_1,bi_2;

double hai,lai,dhi,dli,dhm,dlm,ha0,hap,la0,lap;

double price_p1,price_p0,price_p2,price_01,price_00,price_02;

int p1,p0,p2,fp;

//*****************************************

int init() {

p=Часы*60/Период();

if (fs==0) {sName=CurTime(); fs=1;}

return(0);}

//*******************************

int deinit() {

ObjectDelete("1"+sName);

ObjectDelete("0"+sName);

ObjectDelete("2"+sName); }

//*******************************

int start() {

int i,n;

//------------------------------------------------------------------------------

if (f==1) {

p1=iBarShift(Symbol(),Period(),ObjectGet("1"+sName,OBJPROP_TIME1));

p0=iBarShift(Symbol(),Period(),ObjectGet("0"+sName,OBJPROP_TIME1));

p2=iBarShift(Symbol(),Period(),ObjectGet("2"+sName,OBJPROP_TIME1));

if (fp==0 && p!=p1) {p=p1; fp=1;}

if (fp==0 && p!=p0) {p=p0; fp=1;}

if (fp==0 && p!=p2) {p=p2; fp=1;}

}

//====================================================

sx=0; sy=0; sxy=0; sx2=0;

for (n=0; n<=p; n++) {sx+=n; sy+=Close[n]; sxy+=n*Close[n]; sx2+=MathPow(n,2);}

aa=(sx*sy-(p+1)*sxy)/(MathPow(sx,2)-(p+1)*sx2); bb=(sy-aa*sx)/(p+1);

//----------------------------------------------------

for (i=0; i<=p; i++) {

lr=bb+aa*i;

dh=High-lr; dl=Low-lr;

//----------------------------------------------------

if (i<p/2) {if (i==0) {dh_1=0.0; dl_1=0.0; ai_1=i; bi_1=i;}

if (dh>=dh_1) {dh_1=dh; ai_1=i;}

if (dl<=dl_1) {dl_1=dl; bi_1=i;}}

//----------------------------------------------------

if (i>=p/2) {if (i==p/2) {dh_2=0.0; dl_2=0.0; ai_2=i; bi_2=i;}

если (dh>=dh_2) {dh_2=dh; ai_2=i;}

if (dl<=dl_2) {dl_2=dl; bi_2=i;}}}

//-------------------------------------

lr0=bb; lrp=bb+aa*(i+p);

//===================================================

если (MathAbs(ai_1-ai_2)>MathAbs(bi_1-bi_2)) f=1;

если (MathAbs(ai_1-ai_2)<MathAbs(bi_1-bi_2)) f=2;

if (MathAbs(ai_1-ai_2)==MathAbs(bi_1-bi_2)) {if (MathAbs(dh_1-dh_2)=MathAbs(dl_1-dl_2)) f=2;}

//=================================================

if (f==1) {

for (n=0; n<=20; n++) { f1=0;

for (i=0; i<=p; i++) {hai=High[ai_1]*(i-ai_2)/(ai_1-ai_2)+High[ai_2]*(i-ai_1)/(ai_2-ai_1);

если (i==0 || i==p/2) dhm=0.0;

if (High-hai>dhm && i<p/2) {ai_1=i; f1=1;}

if (High-hai>dhm && i>=p/2) {ai_2=i; f1=1;} }

if (f==0) break;}

//----------------------------

for (i=0; i<=p; i++) {hai=High[ai_1]*(i-ai_2)/(ai_1-ai_2)+High[ai_2]*(i-ai_1)/(ai_2-ai_1);

dli=Low-hai;

if (i==0) dlm=0.0; if (dli<dlm) dlm=dli;}

ha0=High[ai_1]*(0-ai_2)/(ai_1-ai_2)+High[ai_2]*(0-ai_1)/(ai_2-ai_1);

hap=High[ai_1]*(p-ai_2)/(ai_1-ai_2)+High[ai_2]*(p-ai_1)/(ai_2-ai_1);

//----------------------------

цена_p1=hap;

price_p0=hap+dlm/2;

price_p2=hap+dlm;

price_01=ha0;

price_00=ha0+dlm/2;

price_02=ha0+dlm;

}

//=================================================

if (f==2) {

for (n=0; n<=20; n++) { f1=0;

for (i=0; i<=p; i++) {lai=Low*(i-bi_2)/(bi_1-bi_2)+Low*(i-bi_1)/(bi_2-bi_1);

если (i==0 || i==p/2) dlm=0.0;

if (Low-lai<dlm && i<p/2) {bi_1=i; f1=1;}

if (Low-lai=p/2) {bi_2=i; f1=1;}}

if (f==0) break;}

//----------------------------

for (i=0; i<=p; i++) {lai=Low*(i-bi_2)/(bi_1-bi_2)+Low*(i-bi_1)/(bi_2-bi_1);

dhi=High-lai;

если (i==0) dhm=0.0; если (dhi>dhm) dhm=dhi;}

la0=Low*(0-bi_2)/(bi_1-bi_2)+Low*(0-bi_1)/(bi_2-bi_1);

lap=Low*(p-bi_2)/(bi_1-bi_2)+Low*(p-bi_1)/(bi_2-bi_1);

//----------------------------------------------------------------

цена_p1=лап;

price_p0=lap+dhm/2;

price_p2=lap+dhm;

price_01=la0;

price_00=la0+dhm/2;

price_02=la0+dhm;

}

//===================================================================================

ObjectCreate("1"+sName,2, 0,Time[p],price_p1,Time[0],price_01);

ObjectCreate("0"+sName,2, 0,Time[p],price_p0,Time[0],price_00);

ObjectCreate("2"+sName,2, 0,Time[p],price_p2,Time[0],price_02);

//-----------------------------------------------------------------

ObjectSet("1"+sName,OBJPROP_COLOR,col);

ObjectSet("1"+sName,OBJPROP_STYLE,STYLE_SOLID);

ObjectSet("0"+sName,OBJPROP_COLOR,col);

ObjectSet("0"+sName,OBJPROP_STYLE,STYLE_DOT);

ObjectSet("2"+sName,OBJPROP_COLOR,col);

ObjectSet("2"+sName,OBJPROP_STYLE,STYLE_SOLID);

ObjectSet("0"+sName,OBJPROP_WIDTH,1); // управление шириной линии

ObjectSet("1"+sName,OBJPROP_WIDTH,2);

ObjectSet("2"+sName,OBJPROP_WIDTH,2);

//---------------------------------------------

ObjectSet("1"+sName,OBJPROP_TIME1,Time[p]);

ObjectSet("1"+sName,OBJPROP_PRICE1,price_p1);

ObjectSet("1"+sName,OBJPROP_TIME2,Time[0]);

ObjectSet("1"+sName,OBJPROP_PRICE2,price_01);

ObjectSet("0"+sName,OBJPROP_TIME1,Time[p]);

ObjectSet("0"+sName,OBJPROP_PRICE1,price_p0);

ObjectSet("0"+sName,OBJPROP_TIME2,Time[0]);

ObjectSet("0"+sName,OBJPROP_PRICE2,price_00);

ObjectSet("2"+sName,OBJPROP_TIME1,Time[p]);

ObjectSet("2"+sName,OBJPROP_PRICE1,price_p2);

ObjectSet("2"+sName,OBJPROP_TIME2,Time[0]);

ObjectSet("2"+sName,OBJPROP_PRICE2,price_02);

//==================================================================

f=1; p1=p; p0=p; p2=p; fp=0;

//*************************************************************************************

return(0);}

//=====================================================================================

 
xerof123:
Спасибо, омлет,

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

Пожалуйста, вы можете посмотреть на код и сказать мне, почему я получаю несчастную "OrderModify error 1".

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

я очень ценю твою помощь. Спасибо

Прочитайте еще раз то, что я написал - вы вызываете функцию Modify() без предварительной проверки того, нужно ли изменять цену(ы)...

 

Омлет очень хорошо ответил на ваш вопрос. Должен сказать, что у этого парня терпение святого, я его одобряю.

Надеюсь, чтобы лучше проиллюстрировать то, что он говорит, вот что.

По сути, вы сейчас говорите, что если 2 > 1, то модифицируйте (измените) X=2, но проблема в том, что X уже равен 2, поэтому просить модифицировать (изменить) его неправильно, так как он уже равен тому, что вы пытаетесь изменить.

Вам просто нужно проверить, не равно ли оно тому, что вы пытаетесь изменить, и пытаться изменить его, только если это не так.

Яснее не стало?

Удачи

Lux

 

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

Уважаемые кодерсгуру,

Я скопировал файл .mql4 в папку expert и установил опцию Auto trading allowed on в разделе Option, но когда я делаю обратный тест, он не генерирует сделки. Я попробовал несколько бесплатных советников в сети, проблема возникала каждый раз. Я вижу, что данные обратного теста загружаются на графике, но торговли нет, поэтому в отчете все цифры равны 0. Наверное, я что-то сделал не так, надеюсь, вы сможете помочь. Заранее спасибо.

С уважением,

jzhai1994

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