Hilfe bei der Codierung - Seite 246

 
macerina:
Vielen Dank an Mladen für den Code ... Hat dies die doppelte Macd Vergleich und 50 Crossover, wie Sie in der vorherigen Logik erklärt haben. Vielen Dank im Voraus

macerina

Der Unterschied besteht darin, dass in der Aspen-Grafikversion das sekundäre Einstiegssignal eine Kreuzung von rsi und seiner Signallinie ist, während in der Metatrader-Version das sekundäre Signal eine Kreuzung von rsi und einer 50er Linie ist. Der Macd-Teil ist derselbe (man sollte das Signal des geschlossenen Balkens nehmen - das ist die Art und Weise, wie es in der Aspen-Grafikversion gemacht wird)

 

danke für die Info mladen ... ist es möglich, die Option in den gleichen Indikator für die Auswahl 50 Linie Kreuz und Signal Linie Kreuz ...

Vielen Dank im Voraus

 
mladen:
sulaimoney Mit diesen Prozeduren ist alles in Ordnung. Anbei ein einfacher Indikator, der anzeigt, dass alles in Ordnung ist, wenn die Aufrufe dieser beiden Prozeduren nacheinander ausgeführt werden. Überprüfen Sie den Rest des Codes, da der Fehler nicht in diesen beiden Prozeduren liegt

Hallo Mladen

ich habe den Code durchgesehen und einige Fehler gefunden, die ich ersetzt habe.

Jetzt versuche ich, den Wert von

double lastorderprice = 0;

Und

int bscount = 0;

Als Variablen auf einem globalen Bereich wirhin die ea, so dass sie von z.B. void NewOrder() aufgerufen werden können

// OnEveryTick

void LastBuySellOrder() // Schleift durch alle offenen Aufträge, um den letzten Auftrag (Kauf/Verkauf) auszuwählen OnEveryTick

{

double lastorderprice = 0;

datetime lastTime = 0;

datetime closeTime = 0;

int lastTicket = -1; // Keine offen.

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

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

{

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

&&( OrderType() == OP_BUY || OrderType() == OP_SELL )

&& OrderOpenTime() >= lastTime && OrderCloseTime() == closeTime

&& OrderTicket() > lastTicket )

{

lastTime = OrderOpenTime();

lastOrderPrice = OrderOpenPrice();

closeTime = OrderCloseTime();

lastTicket = OrderTicket();

}

return(lastTicket);

}

sonst

Print("OrderSelect() Fehler - ", ErrorDescription(GetLastError()));

}

void PendingStopOrderCount()

{

int bscount = 0;

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

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

{

if (AuftragSymbol() == Symbol())

if (OrderMagicNumber() == OrderId)

if (OrderType() == OP_BUYSTOP )

{

bscount++;

}

}

sonst

{

Print("OrderSend() Fehler - ", ErrorDescription(GetLastError()));

}

}

// Wenn OpBuy oder OpSell vorhanden

void NewOrder()

{

if (bscount==0)

{

BuyStopPending();

}

}

 

HALLO

Dieser Indikator ist repainter? Wenn ja, wann wie viele Balken zurück??

xps_v8_oszillator.ex4xps_v8_oszillator.mq4

 
toldmikl:
HI

Dieser Indikator ist Repainter? Wenn ja, wann wie viele Balken zurück?

xps_v8_oszillator.ex4xps_v8_oszillator.mq4
Ja, es handelt sich um einen Sonnenwindindikator, dessen Perioden je nach Zeitrahmen automatisch eingestellt werden:

1 Minute: Zeitraum = 2880

5 Minuten: Periode = 576

15 Minuten: Zeitraum = 192

30 Minuten: Zeitraum = 96

1 Stunde und mehr: Periode = 48

 

OK, aber ich benutze dies auf Offline-Chart M2 :S So ist es nicht normal Timeframe

 
toldmikl:
OK, aber ich benutze das auf dem Offline-Chart M2 :S Es ist also kein normaler Timeframe

Probieren Sie es aus und Sie werden es selbst sehen (verwenden Sie etwas wie Autorefresh, um den Indikator zu zwingen, alle Balken zu aktualisieren, oder gehen Sie einfach, wenn genügend neue Balken erstellt wurden, zu den Parametern, ändern Sie nichts und klicken Sie auf OK). Achten Sie auf die Perioden, wenn der Trend ändert, was es tun wird.

Besser, als wenn ich versuche zu erklären, was mit dem Solar Winds Code nicht stimmt, um jemanden zu überzeugen.

 

Ich kann den Zeitraum nicht ändern, ich kann nur den Quellcode sehen, hier ist er:

#Eigenschaft indicator_separate_window

#Eigenschaft indicator_minimum 0

#Eigenschaft indicator_maximum 1

#Eigenschaft indicator_buffers 3

#Eigenschaft indicator_color2 C'72,49,255'

#Eigenschaft indicator_color3 C'255,49,72'

#Eigenschaft indicator_width2 6

#property indicator_width3 6

int Zeitraum;

extern bool alarm=false;

double ExtBuffer0[];

double ExtBuffer1[];

double ExtBuffer2[];

double alertBar;

double last;

int init() {

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

switch ( Zeitraum() )

{

Fall 1: Zeitraum = 2880;break;

Fall 5: Zeitraum = 576;break;

Fall 15: Zeitraum = 192;break;

Fall 30: Zeitraum = 96;break;

Fall 60: Zeitraum = 48;break;

Fall 240: Zeitraum = 48;break;

Fall 1440: Zeitraum = 48;break;

Fall 10080: Zeitraum = 48;break;

Standard: Periode = 48;break;

}

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

SetIndexStyle(0,DRAW_NONE);

SetIndexStyle(1,DRAW_HISTOGRAM);

SetIndexStyle(2,DRAW_HISTOGRAM);

IndicatorDigits(Ziffern+1);

SetIndexBuffer(0,ExtBuffer0);

SetIndexBuffer(1,ExtBuffer1);

SetIndexBuffer(2,ExtBuffer2);

IndicatorShortName("");// X :-)");

SetIndexLabel(0, NULL);

SetIndexLabel(1, NULL);

SetIndexLabel(2, NULL);

return(0);

}

int deinit()

{

//----

ObjectDelete("XPS");

ObjectDelete("XPS2");

ObjectDelete("XPS3");

//----

return(0);

}

int start() {

int limit;

int counted_bars=IndicatorCounted();

double prev,current,old;

double Value=0,Value1=0,Value2=0,Fish=0,Fish1=0,Fish2=0;

double Preis;

double MinL=0;

double MaxH=0;

if(gezählte_Balken>0) gezählte_Balken--;

limit=Bars-gezählte_bars;

for(int i=0; i<limit; i++)

{ MaxH = High;

MinL = Low[Lowest(NULL,0,MODE_LOW,period,i)];

Preis = (High+Low)/2;

Wert = 0,33*2*((Preis-MinL)/(MaxH-MinL)-0,5) + 0,67*Wert1;

Wert=MathMin(MathMax(Wert,-0,999),0,999);

ExtBuffer0=0,5*MathLog((1+Wert)/(1-Wert))+0,5*Fisch1;

Wert1=Wert;

Fisch1=ExtPuffer0;

}

bool up = TRUE;

for(i=limit-2; i>=0; i--)

{

current=ExtBuffer0;

prev=ExtBuffer0;

if (((current0))||(current<0)) up= false;

wenn (((aktuell>0)&&(prev0)) up= true;

if(!up) {

ExtBuffer2=1;

ExtBuffer1=0;

if (alarm && i==0 && last != 2 && ExtBuffer1 == 0 && Bars>alertBar)

{

Alert("OSC... Möglicher Trend nach UNTEN am ",Period()," ",Symbol());

alertBar = Bars;last = 2;

}

}

sonst {

ExtBuffer1=1;

ExtBuffer2=0;

if (alarm && i==0 && last != 1 && ExtBuffer2 == 0 && Bars>alertBar)

{

Alert("OSC... Möglicher Trend nach OBEN am ",Period()," ",Symbol());

alertBar = Bars;

last = 1;

}

}

}//Schleife beenden

ObjectDelete("XPS");

ObjectCreate("XPS", OBJ_LABEL, 2, 0, 0);

ObjectSetText("XPS","!XPS v8", 28, "Arial Black", C'46,46,46');

ObjectSet("XPS", OBJPROP_CORNER, 2);

ObjectSet("XPS", OBJPROP_BACK, 0);

ObjectSet("XPS", OBJPROP_XDISTANCE, 6);

ObjectSet("XPS", OBJPROP_YDISTANCE, 8);

ObjectDelete("XPS2");

ObjectCreate("XPS2", OBJ_LABEL, 2, 0, 0);

ObjectSetText("XPS2","!XPS v8", 28, "Arial Black", Silver);

ObjectSet("XPS2", OBJPROP_CORNER, 2);

ObjectSet("XPS2", OBJPROP_BACK, 0);

ObjectSet("XPS2", OBJPROP_XDISTANCE, 4);

ObjectSet("XPS2", OBJPROP_YDISTANCE, 10);

ObjectDelete("XPS3");

ObjectCreate("XPS3", OBJ_LABEL, 2, 0, 0);

ObjectSetText("XPS3", "Trade like a BOSS", 9, "Arial Black", Silver);

ObjectSet("XPS3", OBJPROP_CORNER, 2);

ObjectSet("XPS3", OBJPROP_BACK, 0);

ObjectSet("XPS3", OBJPROP_XDISTANCE, 7);

ObjectSet("XPS3", OBJPROP_YDISTANCE, 3);

return(0);

}

Und?

 
toldmikl:
Ich kann die Periode nicht ändern, ich kann nur den Quellcode sehen, hier ist er:

#property indicator_separate_window

#Eigenschaft indicator_minimum 0

#Eigenschaft indicator_maximum 1

#Eigenschaft indicator_buffers 3

#Eigenschaft indicator_color2 C'72,49,255'

#Eigenschaft indicator_color3 C'255,49,72'

#Eigenschaft indicator_width2 6

#property indicator_width3 6

int Zeitraum;

extern bool alarm=false;

double ExtBuffer0[];

double ExtBuffer1[];

double ExtBuffer2[];

double alertBar;

double last;

int init() {

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

switch ( Zeitraum() )

{

Fall 1: Zeitraum = 2880;break;

Fall 5: Zeitraum = 576;break;

Fall 15: Zeitraum = 192;break;

Fall 30: Zeitraum = 96;break;

Fall 60: Zeitraum = 48;break;

Fall 240: Zeitraum = 48;break;

Fall 1440: Zeitraum = 48;break;

Fall 10080: Zeitraum = 48;break;

Standard: Periode = 48;break;

}

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

SetIndexStyle(0,DRAW_NONE);

SetIndexStyle(1,DRAW_HISTOGRAM);

SetIndexStyle(2,DRAW_HISTOGRAM);

IndicatorDigits(Ziffern+1);

SetIndexBuffer(0,ExtBuffer0);

SetIndexBuffer(1,ExtBuffer1);

SetIndexBuffer(2,ExtBuffer2);

IndicatorShortName("");// X :-)");

SetIndexLabel(0, NULL);

SetIndexLabel(1, NULL);

SetIndexLabel(2, NULL);

return(0);

}

int deinit()

{

//----

ObjectDelete("XPS");

ObjectDelete("XPS2");

ObjectDelete("XPS3");

//----

return(0);

}

int start() {

int limit;

int counted_bars=IndicatorCounted();

double prev,current,old;

double Value=0,Value1=0,Value2=0,Fish=0,Fish1=0,Fish2=0;

double Preis;

double MinL=0;

double MaxH=0;

if(gezählte_Balken>0) gezählte_Balken--;

limit=Bars-gezählte_bars;

for(int i=0; i<limit; i++)

{ MaxH = High;

MinL = Low[Lowest(NULL,0,MODE_LOW,period,i)];

Preis = (High+Low)/2;

Wert = 0,33*2*((Preis-MinL)/(MaxH-MinL)-0,5) + 0,67*Wert1;

Wert=MathMin(MathMax(Wert,-0,999),0,999);

ExtBuffer0=0,5*MathLog((1+Wert)/(1-Wert))+0,5*Fisch1;

Wert1=Wert;

Fisch1=ExtPuffer0;

}

bool up = TRUE;

for(i=limit-2; i>=0; i--)

{

current=ExtBuffer0;

prev=ExtBuffer0;

if (((current0))||(current<0)) up= false;

wenn (((aktuell>0)&&(prev0)) up= true;

if(!up) {

ExtBuffer2=1;

ExtBuffer1=0;

if (alarm && i==0 && last != 2 && ExtBuffer1 == 0 && Bars>alertBar)

{

Alert("OSC... Möglicher Trend nach UNTEN am ",Period()," ",Symbol());

alertBar = Bars;last = 2;

}

}

sonst {

ExtBuffer1=1;

ExtBuffer2=0;

if (alarm && i==0 && last != 1 && ExtBuffer2 == 0 && Bars>alertBar)

{

Alert("OSC... Möglicher Trend nach OBEN bei ",Period()," ",Symbol());

alertBar = Bars;

last = 1;

}

}

}//Schleife beenden

ObjectDelete("XPS");

ObjectCreate("XPS", OBJ_LABEL, 2, 0, 0);

ObjectSetText("XPS","!XPS v8", 28, "Arial Black", C'46,46,46');

ObjectSet("XPS", OBJPROP_CORNER, 2);

ObjectSet("XPS", OBJPROP_BACK, 0);

ObjectSet("XPS", OBJPROP_XDISTANCE, 6);

ObjectSet("XPS", OBJPROP_YDISTANCE, 8);

ObjectDelete("XPS2");

ObjectCreate("XPS2", OBJ_LABEL, 2, 0, 0);

ObjectSetText("XPS2","!XPS v8", 28, "Arial Black", Silver);

ObjectSet("XPS2", OBJPROP_CORNER, 2);

ObjectSet("XPS2", OBJPROP_BACK, 0);

ObjectSet("XPS2", OBJPROP_XDISTANCE, 4);

ObjectSet("XPS2", OBJPROP_YDISTANCE, 10);

ObjectDelete("XPS3");

ObjectCreate("XPS3", OBJ_LABEL, 2, 0, 0);

ObjectSetText("XPS3", "Trade like a BOSS", 9, "Arial Black", Silver);

ObjectSet("XPS3", OBJPROP_CORNER, 2);

ObjectSet("XPS3", OBJPROP_BACK, 0);

ObjectSet("XPS3", OBJPROP_XDISTANCE, 7);

ObjectSet("XPS3", OBJPROP_YDISTANCE, 3);

return(0);

}

Und?

Es wird die Periode 48 für jeden Zeitrahmen angewendet, der kein Standard-Zeitrahmen ist (wie "2 Minuten" Offline-Diagramme)

Für Versionen von Solar Winds, für die Sie die Berechnungsperiode ändern können, siehe diesen Thread: https: //www.mql5.com/en/forum/179650

 

Grüße an Sie Gurus, Bitte helfen Sie mir dieses Skript zu bearbeiten und lassen Sie NUR um, Losgröße, kaufen/verkaufen. Ich besitze bereits einen EA, der Take Profit/Stop Loss automatisch platziert und damit in Konflikt mit diesem indy.

Dieses Skript öffnet automatisch eine beliebige Anzahl von Marktaufträgen, die Sie im MENÜ auf einmal angegeben haben, aber derzeit öffnet es nur einen Auftrag, auch wenn Sie 5 Aufträge eingeben. Bitte helfen Sie mir, diesen Fehler zu beheben und löschen Sie den Take Profit/Stop Loss aus dem Skript vollständig.

Seien Sie gesegnet