0
Спасибо, Эндрю. Но похоже это ЕА. Надеюсь, вы поможете мне превратить его в индикатор без советников. Я думаю, что в следующем месяце я надеюсь, что вы поможете мне с этим. Или я попробую преобразовать его в индикатор, прежде чем просить вашей помощи.
avatar

HoaNguyen

  • 28 августа 2022, 14:23
0
// äëÿ UpTrendLines
if (Trend>=0){
Comm=Comm+"» "+Col[Step*2-1]+" UpTrendLine ";
col=ColNum[Step*2-1];
L1=GetTD(Step+BackStep,Buf2);
L2=GetNextLowTD(L1);
qTL=(Low[L1]-Low[L2])/(L2-L1);
qExt=Highest(NULL,0,MODE_HIGH,L2-L1-1,L1+1); // ëîêàëüíûé ìèíèìóì ìåæäó òî÷êàìè
qLevel=Low[L2]+qTL*L2; if (Step+BackStep==1) qLevel=qLevel+qTL*startBar;
if (L1<0 || L2<0) Comm=Comm+"íà ãðàôèêå íåäîñòàòî÷íî òî÷åê äëÿ ïîñòðîåíèÿ\n";
else {
Comm=Comm+"["+DoubleToStr(Low[L2],Digits)+"»"+DoubleToStr(Low[L1],Digits)+"]";
Comm=Comm+"; Level "+DoubleToStr(qLevel,Digits);
if (Step+BackStep==1) {
if (startBar>0) Comm=Comm+"; Future Bar "+DownHitch(-1,qLevel);
else Comm=Comm+"; Last Bar "+DownHitch(startBar,qLevel);
}
Comm=Comm+"\n";
// Àíàëèç — áûë ëè ïðîáîé òðåíäîâîé ëèíèè
i=L1;isHitch=false;Text="";
while(i>0 && isHitch==false){
tmp=Low[L2]+qTL*(L2-i);
Rem=«LA_»+Step;
if (Low[i]<tmp){
qp=DownHitch(i,tmp);
if (qp!=""){
isHitch=true;
Text=Text+"Èñò. (óð "+DoubleToStr(tmp,Digits)+") "+qp;
ObjectCreate(Rem,OBJ_ARROW,0,Time[i],Low[i]-Point);
ObjectSet(Rem,OBJPROP_COLOR,col); ObjectSet(Rem,OBJPROP_ARROWCODE,242);
while(i>0){ // ïðîáîé îòìåíåí, åñëè ïîñëå ïðîáîÿ áûë íîâûé õàé èëè çàêðûòèå âûøå
i--;
if (High[i]>High[qExt] || Close[i]>High[qExt]-(High[qExt]-Low[L1])*0.236){
Text=Text+" (îòìåíåí)";
ObjectSet(Rem,OBJPROP_PRICE1,Low[i]-Point); ObjectSet(Rem,OBJPROP_TIME1,Time[i]); ObjectSet(Rem,OBJPROP_ARROWCODE,251);
break;
}
}
}
else { Text=Text+"Ëîæ. (óð "+DoubleToStr(tmp,Digits)+"); "; ObjectDelete(Rem);}
}
i--;
}
if (Text=="") Text="Ïðîáîÿ íå áûëî.";
Comm=Comm+Text+"\n";
// end analysis
Rem=«LL_»+Step; // ñîáñíî ëèíèÿ òðåíäà
if (TrendLine==1) {
ObjectCreate(Rem,OBJ_TREND,0,Time[L2],Low[L2],Time[L1],Low[L1]);
ObjectSet(Rem,OBJPROP_COLOR,col); ObjectSet(Rem,OBJPROP_WIDTH,3-MathMin(2,Step));
}
Rem=«HLL_»+Step; // óðîâåíü ïðîáîÿ ëèíèè òðåíäà
if (HorizontLine && (Step+BackStep)==1){
ObjectCreate(Rem,OBJ_HLINE,0,0,qLevel);
ObjectSet(Rem,OBJPROP_COLOR,col);
}
Rem=«LCL_»+Step; // ëèíèÿ êàíàëà
if (ChannelLine){
ObjectCreate(Rem,OBJ_TREND,0,Time[qExt],High[qExt],Time[0],High[qExt]+qTL*qExt);
ObjectSet(Rem,OBJPROP_COLOR,col);
}
Rem=«LTL_»+Step;
if (TakeLines){ // ëèíèè öåëåé
LT[3]=qLevel-High[qExt]+(High[qExt]-Low[L1])*1.618; // äîï óðîâåíü
LT[0]=High[qExt]-qTL*(L2-qExt)-Low[L2];
LT[1]=Close[qExt]-qTL*(L2-qExt)-Low[L2];
qExt=Highest(NULL,0,MODE_CLOSE,L2-L1,L1);
LT[2]=Close[qExt]-qTL*(L2-qExt)-Low[L2];
Comm=Comm+"Öåëè: ";
for(i=0;i<4;i++){
qTL=NormalizeDouble(qLevel-LT[i],Digits);
ObjectCreate(Rem+i,OBJ_HLINE,0,0,qTL,0,0);
ObjectSet(Rem+i,OBJPROP_STYLE,STYLE_DOT); ObjectSet(Rem+i,OBJPROP_COLOR,col);
Comm=Comm+DoubleToStr(qTL,Digits)+" ("+DoubleToStr(LT[i]/Point,0)+"ï.) ";
}
Comm=Comm+"\n";
}
}
}
return(Comm);
}

int GetTD(int P, double Arr[]){
int i=0,j=0;
while(j<P){ i++; while(Arr[i]==0){i++;if(i>showBars-2)return(-1);} j++;}
return (i);
}
int GetNextHighTD(int P){
int i=P+1;
while(Buf1[i]<=High[P]){i++;if(i>showBars-2)return(-1);}
return (i);
}
int GetNextLowTD(int P){
int i=P+1;
while(Buf2[i]>=Low[P] || Buf2[i]==0){i++;if(i>showBars-2)return(-1);}
return (i);
}
// ðåêóðñèâíàÿ ïðîâåðêà íà óñëîâèÿ Äåìàðêà (õàé), âîçâðàùàåò çíà÷åíèå èëè 0
double DemHigh(int cnt, int sh){
if (High[cnt]>=High[cnt+sh] && High[cnt]>High[cnt-sh]) {
if (sh>1) return(DemHigh(cnt,sh-1));
else return(High[cnt]);
}
else return(0);
}
// ðåêóðñèâíàÿ ïðîâåðêà íà óñëîâèÿ Äåìàðêà (ëîó), âîçâðàùàåò çíà÷åíèå èëè 0
double DemLow(int cnt, int sh){
if (Low[cnt]<=Low[cnt+sh] && Low[cnt]<Low[cnt-sh]) {
if (sh>1) return(DemLow(cnt,sh-1));
else return(Low[cnt]);
}
else return(0);
}
string On(bool On){
if (On) return("Âêë"); else return("Âûêë");
}
string UpHitch(int P, double qLevel){ // îïðåäåëåíèå êâàëèôèêàòîðîâ ïðîðûâà ââåðõ
string Comm="";
if (Close[P+1]<Close[P+2]) Comm=Comm+" 1";
if (P>=0 && Open[P]>qLevel) Comm=Comm+" 2";
if (2*Close[P+1]-Low[P+1]<qLevel) Comm=Comm+" 3";
if (Comm!="") Comm="[ Êâ.Ïð:"+Comm+" ]";
return(Comm);
}
string DownHitch(int P, double qLevel){ // îïðåäåëåíèå êâàëèôèêàòîðîâ ïðîðûâà âíèç
string Comm="";
if (Close[P+1]>Close[P+2]) Comm=Comm+" 1";
if (P>=0 && Open[P]<qLevel) Comm=Comm+" 2";
if (2*Close[P+1]-High[P+1]>qLevel) Comm=Comm+" 3";
if (Comm!="") Comm="[ Êâ.Ïð:"+Comm+" ]";
return(Comm);
}
avatar

HoaNguyen

  • 28 августа 2022, 09:56
0
int start(){
if (qBars!=Bars){
deinit(); Comment(«Demark, âåðñèÿ © GameOver\nÏîäîæäèòå, èäåò çàãðóçêà áàðîâ...»);
Sleep(1000); qBars=Bars; qTime=0; return(0);
}

if (qTime==Time[0]) return(0); qTime=Time[0]; // çàïóñêàåöà òîêà íà 1ì òèêå
if (showBars==0) showBars=Bars-LevDP; // çàïîëíèëè è îòîáðàçèëè òî÷êè äåìàðêà
for (int cnt=showBars;cnt>LevDP;cnt--){
Buf1[cnt]=DemHigh(cnt,LevDP);
Buf2[cnt]=DemLow(cnt,LevDP);
}
string Comm;
Comm="Ëèíèÿ òðåíäà["+On(TrendLine)+"]; Êàíàë ["+On(ChannelLine)+
"]; Óðîâåíü ïðîáîÿ ["+On(HorizontLine)+"]; Öåëè ["+On(TakeLines)+"]\n";
for(cnt=1;cnt<=qSteps;cnt++) Comm=Comm+(TDMain(cnt));
Comm=Comm+"———— © GameOver ————";
Comment(Comm);
return(0);
}

string TDMain(int Step){
int H1,H2,L1,L2,qExt,i,col;
double tmp,qTL,qLevel,HT[4],LT[4];
bool isHitch;
string Comm="»—»—» Øàã "+Step+" èç "+qSteps+" (BackStep "+BackStep+")\n",Text,Rem,qp;
// äëÿ DownTrendLines
if (Trend<=0){
Comm=Comm+"» "+Col[Step*2-2]+" DownTrendLine ";
col=ColNum[Step*2-2];
H1=GetTD(Step+BackStep,Buf1);
H2=GetNextHighTD(H1);
qTL=(High[H2]-High[H1])/(H2-H1);
qExt=Lowest(NULL,0,MODE_LOW,H2-H1-1,H1+1); // ëîêàëüíûé ìèíèìóì ìåæäó òî÷êàìè
qLevel=High[H2]-qTL*(H2); if (Step+BackStep==1) qLevel=qLevel-qTL*startBar;
if (H1<0 || H2<0) Comm=Comm+"íà ãðàôèêå íåäîñòàòî÷íî òî÷åê äëÿ ïîñòðîåíèÿ\n";
else {
Comm=Comm+"["+DoubleToStr(High[H2],Digits)+"»"+DoubleToStr(High[H1],Digits)+"]";
Comm=Comm+"; Level "+DoubleToStr(qLevel,Digits);
if (Step+BackStep==1) {
if (startBar>0) Comm=Comm+"; Future Bar "+UpHitch(-1,qLevel);
else Comm=Comm+"; Last Bar "+UpHitch(startBar,qLevel);
}
Comm=Comm+"\n";
// Àíàëèç — áûë ëè ïðîáîé òðåíäîâîé ëèíèè
i=H1;isHitch=false;Text="";
while(i>0 && isHitch==false){
tmp=High[H2]-qTL*(H2-i);
Rem=«HA_»+Step;
if (High[i]>tmp){
qp=UpHitch(i,tmp);
if (qp!=""){
isHitch=true;
Text=Text+"Èñò. (óð "+DoubleToStr(tmp,Digits)+") "+qp;
ObjectCreate(Rem,OBJ_ARROW,0,Time[i],Low[i]-Point);
ObjectSet(Rem,OBJPROP_COLOR,col); ObjectSet(Rem,OBJPROP_ARROWCODE,241);
while(i>0){ // ïðîáîé îòìåíåí, åñëè ïîñëå ïðîáîÿ áûë íîâûé ëîó èëè çàêðûòèå íèæå
i--;
if (Low[i]<Low[qExt] || Close[i]<(Low[qExt]+(High[H1]-Low[qExt])*0.236)){
Text=Text+" (îòìåíåí)";
ObjectSet(Rem,OBJPROP_PRICE1,Low[i]-Point); ObjectSet(Rem,OBJPROP_TIME1,Time[i]); ObjectSet(Rem,OBJPROP_ARROWCODE,251);
break;
}
}
}
else { Text=Text+"Ëîæ. (óð "+DoubleToStr(tmp,Digits)+"); "; ObjectDelete(Rem);}
}
i--;
}
if (Text=="") Text="Ïðîáîÿ íå áûëî.";
Comm=Comm+Text+"\n";
// end analysis
Rem=«HL_»+Step; // ñîáñíî ëèíèÿ òðåíäà
if (TrendLine){
ObjectCreate(Rem,OBJ_TREND,0,Time[H2],High[H2],Time[H1],High[H1]);
ObjectSet(Rem,OBJPROP_COLOR,col); ObjectSet(Rem,OBJPROP_WIDTH,3-MathMin(2,Step));
}
Rem=«HHL_»+Step; // óðîâåíü ïðîáîÿ ëèíèè òðåíäà
if (HorizontLine && (Step+BackStep)==1){
ObjectCreate(Rem,OBJ_HLINE,0,0,qLevel);
ObjectSet(Rem,OBJPROP_COLOR,col);
}
Rem=«HCL_»+Step; // ëèíèÿ êàíàëà
if (ChannelLine){
ObjectCreate(Rem,OBJ_TREND,0,Time[qExt],Low[qExt],Time[0],Low[qExt]-qTL*qExt);
ObjectSet(Rem,OBJPROP_COLOR,col);
}
Rem=«HTL_»+Step; // ëèíèè öåëåé
if (TakeLines){
HT[3]=Low[qExt]+(High[H1]-Low[qExt])*1.618-qLevel; // äîï óðîâåíü
HT[0]=High[H2]-qTL*(H2-qExt)-Low[qExt];
HT[1]=High[H2]-qTL*(H2-qExt)-Close[qExt];
qExt=Lowest(NULL,0,MODE_CLOSE,H2-H1,H1);
HT[2]=High[H2]-qTL*(H2-qExt)-Close[qExt];
Comm=Comm+"Öåëè: ";
for(i=0;i<4;i++){
qTL=NormalizeDouble(qLevel+HT[i],Digits);
ObjectCreate(Rem+i,OBJ_HLINE,0,0,qTL,0,0);
ObjectSet(Rem+i,OBJPROP_STYLE,STYLE_DOT); ObjectSet(Rem+i,OBJPROP_COLOR,col);
Comm=Comm+DoubleToStr(qTL,Digits)+" ("+DoubleToStr(HT[i]/Point,0)+"ï.) ";
}
Comm=Comm+"\n";
}
}
}
avatar

HoaNguyen

  • 28 августа 2022, 09:55
0
Вот код индикатора линии тренда, который я загрузил. Andrew

#property copyright «GreenDog»
#property link «krot@inbox.ru» // v2.3.1

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue

extern int showBars=200; // åñëè = 0, òî òî÷êè äåìàðêà îòîáðàæàåòñÿ äëÿ âñåãî ãðàôèêà
extern int LevDP=3; // óðîâåíü òî÷åê äåìàðêà; 2 = öåíòðàëüíûé áàð áóäåò âûøå(íèæå) 2õ áàðîâ ñëåâà è 2õ áàðîâ ñïðàâà
extern int qSteps=1; // êîëè÷åñòâî îòîáðàæàåìûõ øàãîâ, íå áîëåå 3õ
extern int BackStep=0; // êîëè÷åñòâî øàãîâ íàçàä
extern int startBar=0; // åñëè 0, òî ðåêîìåíäàöèè äëÿ òåêóùåãî áàðà, åñëè 1 — òî äëÿ ïðåäïîëàãàåìîãî ñëåäóþùåãî áàðà
extern bool TrendLine=true; // false = ëèíèé òðåíäà íå áóäåò
extern bool HorizontLine=false; // true = òî áóäóò ïðîðèñîâàíû óðîâíè ïðîáîÿ
extern bool ChannelLine=false; // true = ñòðîèòü ïàðàëåëüíî ëèíèÿì òðåíäà êàíàëû
extern bool TakeLines=false; // true = òî ðèñóåì óðîâíè òåéêà
extern int Trend=0; // 1 = òîëüêî äëÿ UpTrendLines, -1 = òîëüêî äëÿ DownTrendLines, 0 = äëÿ âñåõ TrendLines

double Buf1[];
double Buf2[];

string Col[6]={"Êðàñíàÿ","Ñèíÿÿ","Ðîçîâàÿ","Ãîëóáàÿ","Êîðè÷íåâàÿ","Ñàëàòíàÿ"};
int ColNum[6]={Red,DarkBlue,Coral,DodgerBlue,SaddleBrown,MediumSeaGreen};

int qBars; double qTime=0; // ïåðåìåííûå äëÿ ëèêâèäàöèè ãëþêîâ ïðè çàãðóçêå

int init()
{
qBars=Bars;
qSteps=MathMin(3,qSteps);
int code=161; string Rem=«DemarkLines © GameOver»;
IndicatorShortName(Rem);
SetIndexStyle(0,DRAW_ARROW);
SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(0,code);
SetIndexArrow(1,code);
SetIndexBuffer(0,Buf1);
SetIndexBuffer(1,Buf2);
SetIndexEmptyValue(0,0.0);
SetIndexEmptyValue(1,0.0);
SetIndexLabel(0,Rem);
SetIndexLabel(1,Rem);
return(0);
}

int deinit() {
Comment("");
ArrayInitialize(Buf1,0.0);
ArrayInitialize(Buf2,0.0);
for(int i=1;i<=LevDP;i++){
ObjectDelete(«HA_»+i);ObjectDelete(«LA_»+i);
ObjectDelete(«HL_»+i);ObjectDelete(«LL_»+i);
ObjectDelete(«HHL_»+i);ObjectDelete(«HLL_»+i);
ObjectDelete(«HCL_»+i);ObjectDelete(«LCL_»+i);
for(int j=0;j<4;j++) {ObjectDelete(«HTL_»+i+j);ObjectDelete(«LTL_»+i+j);}
}
}
avatar

HoaNguyen

  • 28 августа 2022, 09:54
0
пожалуйста, помогите мне попробовать еще раз с тем же индикатором. Или, если он продолжит падать, я загружу код для просмотра. Может быть, это потому, что ваше устройство работает много дней и становится перегруженным
avatar

HoaNguyen

  • 28 августа 2022, 09:50
0
о, я сожалею об этом. Я не знаю, что заставило его зависнуть. Он до сих пор отлично работает на моем устройстве, Андрей.
avatar

HoaNguyen

  • 28 августа 2022, 09:46
0
Отлично, отлично, замечательно. Большое спасибо, Андрей
avatar

HoaNguyen

  • 4 августа 2022, 13:01
0
Выглядит это так: ценовой бар предсказывает диапазон цен вверх и вниз для текущей свечи сразу после окончания предыдущей свечи.
avatar

HoaNguyen

  • 4 августа 2022, 06:47
0
Эндрю, пожалуйста, помогите мне
avatar

HoaNguyen

  • 3 августа 2022, 06:55
0
Если ваша идея хороша, я поручусь за вас
avatar

HoaNguyen

  • 21 июля 2022, 17:45
0
Да все верно, Андрей, в исходниках то же самое, только КУПИТЬ и ПРОДАТЬ. Я попытался объединить 2 индикатора в 1, чтобы избежать проблем с использованием 2 индикаторов, но они оба ошибочны и не сигнализируют. Так помоги мне Андрей
avatar

HoaNguyen

  • 11 июня 2022, 06:27
0
Спасибо за обнаружение, что-то не так, что заставляет меня много раз перезагружать еще 0kb. Я обновил zip-файл
avatar

HoaNguyen

  • 10 июня 2022, 19:54
0
Привет Андрей, помогите пожалуйста как исправить исходный код или подскажите как исправить исходный код для закрытия кросс-ордера MA: EMA10 & EMA30.
avatar

HoaNguyen

  • 2 июня 2022, 15:46
0
Andrew, Стоп-лосс на покупку ставится, когда EMA10 > EMA30; SELL Stop Loss размещается, когда EMA10 < EMA30 ;. Помогите мне исправить это, вы останавливаете свой убыток в фиксированном количестве пипсов, поэтому советник теряет больше, чем на самом деле
avatar

HoaNguyen

  • 1 июня 2022, 21:28
0
Проблема, вероятно, в mt4, я тестировал его на 1 mt4 другого брокера, и советник работает нормально. Спасибо. Однако я, вероятно, откажусь от идеи EA Hedging, потому что, к сожалению, это очень рискованно. Я вернусь к торговым идеям по тренду, но это сложно закодировать, поэтому я не знаю, как это описать.
avatar

HoaNguyen

  • 2 ноября 2021, 21:04
0
ok Thanks sir
avatar

HoaNguyen

  • 2 ноября 2021, 20:00
0
Andrey, please double check, when the price moves 10pip, there is no buy order. link EA: www.opentraders.ru/downloads/3168/
avatar

HoaNguyen

  • 2 ноября 2021, 05:43