Wie programmiert man? - Seite 96

 
 

Hallo zusammen,

Dies ist eine dumme Frage, und ich weiß, ich habe es irgendwo vor gesehen, aber ich brauche Hilfe.

Ich kodiere einen benutzerdefinierten Indikator, und alles, was ich möchte, dass es zu tun ist, lesen Sie den aktuellen Geldkurs auf NUR DER BEGINN eines neuen bar. Ich kann nicht einfach Open[0] verwenden, denn jedes Mal, wenn ein neuer Tick kommt, wird der Open-Wert für den aktuellen Balken zurückgegeben. Ich möchte, dass der Wert nur einmal zurückgegeben wird, bis ein neuer Balken gebildet wird.

Ich weiß, dass ich hier etwas ganz Einfaches übersehe, aber ich habe ein paar Probleme, es herauszufinden. Kann mir jemand helfen?

Danke!

-wolfe

 
wolfe:
Hallo zusammen,

Dies ist eine dumme Codierung Frage, und ich weiß, ich habe es irgendwo vor gesehen, aber ich brauche Hilfe.

Ich kodiere einen benutzerdefinierten Indikator, und alles, was ich möchte, dass er den aktuellen Geldkurs NUR am ANFANG eines neuen Balkens liest. Ich kann nicht einfach Open[0] verwenden, denn jedes Mal, wenn ein neuer Tick kommt, wird der Open-Wert für den aktuellen Balken zurückgegeben. Ich möchte, dass der Wert nur einmal zurückgegeben wird, bis ein neuer Balken gebildet wird.

Ich weiß, dass ich hier etwas ganz Einfaches übersehe, aber ich habe ein paar Probleme, es herauszufinden. Kann mir jemand helfen?

Danke!

-wolfe

Speichern Sie einfach die aktuelle Barzeit (Time[0]) - wenn sich dieser Wert ändert, haben Sie einen neuen Bar, also holen Sie Ihren Preis, speichern Sie den neuen Wert und wiederholen Sie den Vorgang...

 
omelette:
Speichern Sie einfach die aktuelle Barzeit (Time[0]) - wenn sich dieser Wert ändert, haben Sie einen neuen Bar, also holen Sie Ihren Preis, speichern Sie den neuen Wert und wiederholen Sie den Vorgang...

Danke Omelett,

Daran hätte ich denken sollen, ich bin ein bisschen enttäuscht von mir selbst!

Danke für die Hilfe!

 

Kann mir jemand zeigen, was ich bei diesem Code falsch mache?

Ich würde gerne mehr Zeitrahmen hinzufügen, wie z.B. Daily, aber ich weiß nicht, was ich falsch mache

//+---------------------------------------------------------+

//| #MTF_Hi_Low_Middle.mq4

//| Basis von spudfibo.Upgrade von Darkkiller

//: Danke an Mladen für die Hilfe bei der Korrektur

//+------------------------------------------------------------------+

#property indicator_chart_window

extern string note1 = "H4 Higher,Middle,Lower Farben";

externe Farbe H4HigherColor = DeepSkyBlue;

externe Farbe H4MiddleColor = Gelb;

externe Farbe H4LowerColor = HotPink;

extern string note2 = "H4 Higher, Lower und Middle zeichnen?";

extern bool H4HiLow = wahr;

extern bool H4Mid = wahr;

extern string note3 = "D1 Höhere,Mittlere,Niedrigere Farben";

externe Farbe D1HigherColor = DeepSkyBlue;

externe Farbe D1MiddleColor = Gelb;

externe Farbe D1LowerColor = HotPink;

extern string note4 = "D1 Höher, Tiefer und Mittlerer zeichnen?";

extern bool D1HiLow = wahr;

extern bool D1Mid = true;

double HiPrice, LoPrice, Range, D1HiPrice, D1LoPrice, D1Range;

datetime StartTime;

int init()

{

return(0);

}

int deinit()

{

ObjectDelete("H4Higher");

ObjectDelete("H4Lower");

ObjectDelete("H4Middle");

ObjectDelete("D1Higher");

ObjectDelete("D1Unter");

ObjectDelete("D1Middle");

return(0);

}

//+------------------------------------------------------------------+

//| Fibo zeichnen

//+------------------------------------------------------------------+

int DrawFibo()

{

///////////////////////////////////////////HILO/////

if(H4HiLow)

{

if(ObjectFind("H4Higher") == -1)

ObjectCreate("H4Higher", OBJ_FIBO, 0, StartTime, HiPrice+Range, StartTime, HiPrice);

sonst

{

ObjectSet("H4Higher",OBJPROP_TIME2, StartTime);

ObjectSet("H4Higher",OBJPROP_TIME1, StartTime);

ObjectSet("H4Higher",OBJPROP_PRICE1,HiPrice+Range);

ObjectSet("H4Higher",OBJPROP_PRICE2,HiPrice); ObjectSet("H4Higher",OBJPROP_PRICE2,HiPrice);

}

ObjectSet("H4Higher", OBJPROP_LEVELCOLOR, H4HigherColor);

ObjectSet("H4Higher", OBJPROP_FIBOLEVELS,1);

ObjectSet("H4Higher", OBJPROP_FIRSTLEVEL+0,0.0); ObjectSetFiboDescription("H4Higher", 0, "H4 HIGHER- %$");

ObjectSet("H4Higher", OBJPROP_RAY,true);

ObjectSet("H4Higher", OBJPROP_BACK,true);

ObjectSet("H4Higher", OBJPROP_COLOR,EMPTY);

if(ObjectFind("H4Lower") == -1)

ObjectCreate("H4Lower", OBJ_FIBO, 0, StartTime, LoPrice-Range, StartTime, LoPrice);

sonst

{

ObjectSet("H4Lower", OBJPROP_TIME2, StartTime);

ObjectSet("H4Lower", OBJPROP_TIME1, StartTime);

ObjectSet("H4Lower", OBJPROP_PRICE1,LoPrice-Range);

ObjectSet("H4Lower", OBJPROP_PRICE2,LoPrice); ObjectSet("H4Lower", OBJPROP_PRICE2,LoPrice);

}

ObjectSet("H4Lower", OBJPROP_LEVELCOLOR, H4LowerColor);

ObjectSet("H4Lower", OBJPROP_FIBOLEVELS, 1);

ObjectSet("H4Lower", OBJPROP_FIRSTLEVEL+0,0.0); ObjectSetFiboDescription("H4Lower", 0, "H4 LOWER - %$");

ObjectSet("H4Lower", OBJPROP_RAY, true);

ObjectSet("H4Lower", OBJPROP_BACK, true);

ObjectSet("H4Lower", OBJPROP_COLOR, EMPTY);

}

if(D1HiLow)

{

if(ObjectFind("D1Higher") == -1)

ObjectCreate("D1Higher", OBJ_FIBO, 0, D1StartTime, D1HiPrice+D1Range, D1StartTime, D1HiPrice);

sonst

{

ObjectSet("D1Higher", OBJPROP_TIME2, D1StartTime);

ObjectSet("D1Higher", OBJPROP_TIME1, D1StartTime);

ObjectSet("D1Higher", OBJPROP_PRICE1, D1HiPrice+D1Range);

ObjectSet("D1Höher", OBJPROP_PRICE2, D1HiPrice); ObjectSet("D1Höher", OBJPROP_PRICE2, D1HiPrice);

}

ObjectSet("D1Higher", OBJPROP_LEVELCOLOR, D1HigherColor);

ObjectSet("D1Higher", OBJPROP_FIBOLEVELS,1);

ObjectSet("D1Higher", OBJPROP_FIRSTLEVEL+0,0.0); ObjectSetFiboDescription("D1Higher", 0, "H4 HIGHER- %$");

ObjectSet("D1Higher", OBJPROP_RAY, true);

ObjectSet("D1Höher", OBJPROP_BACK, true); ObjectSet("D1Höher", OBJPROP_BACK, true);

ObjectSet("D1Higher", OBJPROP_COLOR, EMPTY);

if(ObjectFind("D1Lower") == -1)

ObjectCreate("D1Lower", OBJ_FIBO, 0, D1StartTime, D1LoPrice-D1Range, D1StartTime, 1LoPrice);

sonst

{

ObjectSet("D1Lower", OBJPROP_TIME2, D1StartTime);

ObjectSet("D1Niedriger", OBJPROP_TIME1, D1StartTime);

ObjectSet("D1Niedriger", OBJPROP_PRICE1, D1LoPrice-D1Range);

ObjectSet("D1Niedriger", OBJPROP_PRICE2, D1LoPrice);

}

ObjectSet("D1Lower", OBJPROP_LEVELCOLOR, D1LowerColor);

ObjectSet("D1Unter", OBJPROP_FIBOLEVELS,1);

ObjectSet("D1Lower", OBJPROP_FIRSTLEVEL+0,0.0); ObjectSetFiboDescription("D1Lower", 0, "H4 LOWER - %$");

ObjectSet("D1Lower", OBJPROP_RAY, true);

ObjectSet("D1Unter", OBJPROP_BACK, true);

ObjectSet("D1Unter", OBJPROP_COLOR, EMPTY);

}

/////////////////////////////////////////HILO////////

/////////////////////////////////////////MIDDLE////

if(H4Mid)

if(ObjectFind("H4Middle") == -1)

ObjectCreate("H4Middle", OBJ_FIBO, 0, StartTime, HiPrice, StartTime+PERIOD_H4*60, LoPrice);

sonst

{

ObjectSet("H4Middle", OBJPROP_TIME2, StartTime);

ObjectSet("H4Middle", OBJPROP_TIME1, StartTime+PERIOD_H4*60);

ObjectSet("H4Middle", OBJPROP_PRICE1, HiPrice);

ObjectSet("H4Middle", OBJPROP_PRICE2, LoPrice); ObjectSet("H4Middle", OBJPROP_PRICE2, LoPrice);

}

ObjectSet("H4Middle", OBJPROP_LEVELCOLOR, H4MiddleColor);

ObjectSet("H4Middle", OBJPROP_FIBOLEVELS,1);

ObjectSet("H4Middle", OBJPROP_FIRSTLEVEL+0,0.500); ObjectSetFiboDescription("H4Middle", 0, "H4 MIDDLE - %$");

ObjectSet("H4Middle", OBJPROP_RAY, true);

ObjectSet("H4Middle", OBJPROP_BACK, true);

ObjectSet("H4Middle", OBJPROP_COLOR, EMPTY); ObjectSet("H4Middle", OBJPROP_COLOR, true);

}

if(D1Mid)

if(ObjectFind("D1Middle") == -1)

ObjectCreate("D1Middle", OBJ_FIBO, 0, D1StartTime, D1HiPrice, D1StartTime+PERIOD_D1*60, D1LoPrice);

sonst

{

ObjectSet("D1Middle", OBJPROP_TIME2, D1StartTime);

ObjectSet("D1Middle", OBJPROP_TIME1, D1StartTime+PERIOD_D1*60);

ObjectSet("D1Middle", OBJPROP_PRICE1, D1HiPrice);

ObjectSet("D1Middle", OBJPROP_PRICE2, D1LoPrice);

}

ObjectSet("D1Middle", OBJPROP_LEVELCOLOR, D1MiddleColor);

ObjectSet("D1Middle", OBJPROP_FIBOLEVELS,1);

ObjectSet("D1Middle", OBJPROP_FIRSTLEVEL+0,0.500); ObjectSetFiboDescription("D1Middle", 0, "D1 MIDDLE - %$");

ObjectSet("D1Middle", OBJPROP_RAY, true);

ObjectSet("D1Middle", OBJPROP_BACK, true);

ObjectSet("D1Middle", OBJPROP_COLOR, EMPTY);

}

/////////////////////////////////////////MIDDLE////

//+-----------------------------------------------+

//| Indikator Startfunktion

//+-----------------------------------------------+

int start()

{

int shift = iBarShift(NULL, PERIOD_D1, Time[0]) + 1; // H4

HiPreis = iHigh(NULL, PERIOD_H4, shift);

LoPreis = iLow (NULL, PERIOD_H4, shift);

StartTime = iTime(NULL, PERIOD_H4, shift);

D1HiPreis = iHigh(NULL, PERIOD_D1, Verschiebung);

D1LoPreis = iLow (NULL, PERIOD_D1, Verschiebung);

D1StartTime = iTime(NULL, PERIOD_D1, shift);

if(TimeDayOfWeek(StartTime) == 0/*Sonntag*/)

{//Freitagshoch und -tief hinzufügen

HiPreis = MathMax(HiPreis, iHigh(NULL,PERIOD_H4, shift+1));

LoPreis = MathMin(LoPreis, iLow(NULL,PERIOD_H4, shift+1));

D1HiPreis = MathMax(D1HiPreis, iHigh(NULL, PERIOD_D1, shift+1));

D1LoPreis = MathMin(D1LoPreis, iLow(NULL, PERIOD_D1, shift+1));

}

Range = HiPrice - LoPrice;

D1Range = D1HiPrice - D1LoPrice;

DrawFibo();

return(0);

}

//+------------------------------+

Darunter füge ich das Original für H4 high low mid an

 

Ich bitte um Hilfe, ich versuche, den Delta-Stop als Stop-Loss und Trailing-Stop zu verwenden.

und Trailing-Stop zu verwenden. Im Anhang ist der EA.

Ist es möglich, dies zu tun.

Dateien:
 

//+------------------------------------------------------------------+

//| MODIFIED BY Avery T. Horton, Jr. aka TheRumpledOne |

//| |

//| |

//|

//

// google suche "therumpledone mt4"

//

//+------------------------------------------------------------------+

//| _Fibo_Hi_Low_Middle.mq4

//| Basis von spudfibo.Upgrade von Darkkiller

//: Danke an Mladen für die Hilfe bei der Korrektur

//+------------------------------------------------------------------+

#property indicator_chart_window

extern int myChartPeriod = 0 ;

extern string note1 = "Höhere, mittlere, untere Farben";

extern color HöhereFarbe = DeepSkyBlue;

externe Farbe MiddleColor = Gelb;

externe Farbe LowerColor = HotPink;

extern string note2 = "Mitte zeichnen?";

extern bool HiLow = true;

extern bool Mid = true;

double HiPrice, LoPrice, Range;

datetime StartTime;

string tChartPeriod, tHigher, tLower, tMiddle ;

int init()

{

if(myChartPeriod == 0) { myChartPeriod = Period() ; }

tChartPeriod = TimeFrameToString(myChartPeriod) ;

tHigher = tChartPeriod + "H" ;

tLower = tChartPeriod + "L" ;

tMiddle = tChartPeriod + "M" ;

return(0);

}

int deinit()

{

ObjectDelete(tHigher);

ObjectDelete(tLower);

ObjectDelete(tMiddle);

return(0);

}

//+------------------------------------------------------------------+

//| Fibo zeichnen

//+------------------------------------------------------------------+

int DrawFibo()

{

if(HiLow)

{

if(ObjectFind(tHigher) == -1)

ObjectCreate(tHigher,OBJ_FIBO,0,StartTime,HiPrice+Range,StartTime,HiPrice);

sonst

{

ObjectSet(tHigher,OBJPROP_TIME2, StartTime);

ObjectSet(tHigher,OBJPROP_TIME1, StartTime);

ObjectSet(tHigher,OBJPROP_PRICE1,HiPrice+Range);

ObjectSet(tHigher,OBJPROP_PRICE2,HiPrice);

}

ObjectSet(tHigher,OBJPROP_LEVELCOLOR,HigherColor);

ObjectSet(tHigher,OBJPROP_FIBOLEVELS,1);

ObjectSet(tHigher,OBJPROP_FIRSTLEVEL+0,0.0);

ObjectSetFiboDescription(tHigher,0,tChartPeriod+" HIGHER- %$");

ObjectSet(tHigher,OBJPROP_RAY,true);

ObjectSet(tHigher,OBJPROP_BACK,true);

ObjectSet(tHigher,OBJPROP_COLOR,EMPTY);

if(ObjectFind(tLower) == -1)

ObjectCreate(tLower,OBJ_FIBO,0,StartTime,LoPrice-Range,StartTime,LoPrice);

sonst

{

ObjectSet(tLower,OBJPROP_TIME2, StartTime);

ObjectSet(tLower,OBJPROP_TIME1, StartTime);

ObjectSet(tLower,OBJPROP_PRICE1,LoPrice-Range);

ObjectSet(tLower,OBJPROP_PRICE2,LoPrice);

}

ObjectSet(tLower,OBJPROP_LEVELCOLOR,LowerColor);

ObjectSet(tUnter,OBJPROP_FIBOLEVELS,1);

ObjectSet(tLower,OBJPROP_FIRSTLEVEL+0,0.0);

ObjectSetFiboDescription(tLower,0,tChartPeriod+" LOWER - %$");

ObjectSet(tLower,OBJPROP_RAY,true);

ObjectSet(tLower,OBJPROP_BACK,true);

ObjectSet(tLower,OBJPROP_COLOR,EMPTY);

}

/////////////////////////////////////////MIDDLE///////////////////////////

if(Mid)

if(ObjectFind(tMiddle) == -1)

ObjectCreate(tMiddle,OBJ_FIBO,0,StartTime,HiPrice,StartTime+myChartPeriod*60,LoPrice);

sonst

{

ObjectSet(tMiddle,OBJPROP_TIME2, StartTime);

ObjectSet(tMiddle,OBJPROP_TIME1, StartTime+myChartPeriod*60);

ObjectSet(tMiddle,OBJPROP_PRICE1,HiPrice);

ObjectSet(tMiddle,OBJPROP_PRICE2,LoPrice);

}

ObjectSet(tMiddle,OBJPROP_LEVELCOLOR,MiddleColor);

ObjectSet(tMiddle,OBJPROP_FIBOLEVELS,1);

ObjectSet(tMiddle,OBJPROP_FIRSTLEVEL+0,0.500);

ObjectSetFiboDescription(tMiddle,0,tChartPeriod+" MIDDLE - %$");

ObjectSet(tMiddle,OBJPROP_RAY,true);

ObjectSet(tMiddle,OBJPROP_BACK,true);

ObjectSet(tMiddle,OBJPROP_COLOR,EMPTY);

}

//+------------------------------------------------------------------+

//| Indikator Startfunktion

//+------------------------------------------------------------------+

int start()

{

int shift = iBarShift(NULL,myChartPeriod,Time[0]) + 1; //

HiPrice = iHigh(NULL,myChartPeriod,shift);

LoPreis = iLow(NULL,myChartPeriod,shift);

StartTime = iTime(NULL,myChartPeriod,shift);

if(TimeDayOfWeek(StartTime)==0/*Sonntag*/)

{//Freitagshoch und -tief hinzufügen

HiPrice = MathMax(HiPrice,iHigh(NULL,myChartPeriod,shift+1));

LoPreis = MathMin(LoPreis,iTief(NULL,myChartPeriod,shift+1));

}

Range = HiPrice-LoPrice;

DrawFibo();

// Comment( "Zeitraum_", tChartPeriod ) ;

return(0);

}

//+------------------------------------------------------------------+

string TimeFrameToString(int tf)

{

string tfs;

switch(tf) {

case PERIOD_M1: tfs="M1" ; break;

case PERIOD_M5: tfs="M5" ; break;

case PERIOD_M15: tfs="M15" ; break;

case PERIOD_M30: tfs="M30" ; break;

case PERIOD_H1: tfs="H1" ; break;

case PERIOD_H4: tfs="H4" ; break;

case PERIOD_D1: tfs="D1" ; break;

case PERIOD_W1: tfs="W1" ; break;

case PERIOD_MN1: tfs="MN";

}

return(tfs);

}

So habe ich es gemacht.

P.S.: Warum werden meine Anhänge gelöscht?

Dateien:
highlower.gif  14 kb
 

MoveStopOnce

Hallo, ich versuche, diesen MoveStopOnce-Code zum Laufen zu bringen, aber die Sell-Trades scheinen nicht durch den Code geändert zu werden, nur die Buys. Stimmt irgendetwas nicht?

//Buys

//MoveOnce

if(MoveStopOnce && MoveStopWhenPrice > 0) {

if(Bid - OrderOpenPrice() >= Point * MoveStopWhenPrice) {

if(OrderStopLoss() < OrderOpenPrice() + Point * MoveStopTo) {

OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() + Point * MoveStopTo, OrderTakeProfit(), 0, Red);

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

[/code]

[code]

//Sells

//MoveOnce

if(MoveStopOnce && MoveStopWhenPrice > 0) {

if(OrderOpenPrice() - Ask >= Point * MoveStopWhenPrice) {

if(OrderStopLoss() > OrderOpenPrice() - Point * MoveStopTo) {

OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() - Point * MoveStopTo, OrderTakeProfit(), 0, Red);

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

 

MoveStopOnce

Ich habe dieses Problem gehabt.

Ich denke, Sie müssen Folgendes hinzufügen:

if (OrderType() == OP_BUY)

UND OP_SELL für den Verkaufscode verwenden.

Groß sein

 
Big Be:
Ich hatte dieses Problem auch schon.

Ich denke, Sie müssen hinzufügen:

if (OrderType() == OP_BUY)

UND OP_SELL für den Verkaufscode verwenden.

Großer Be

Ok, ich werde es versuchen, wenn ich zu Hause bin, aber warum funktioniert es dann immer noch mit Kaufaufträgen?

Danke