Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Okay, zu der ursprünglichen Frage:
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Magenta
extern int MAPeriod=200;
extern double iController = 1.386;
//---- buffers
//double Memory[200];
double ExtMapBuffer1[];
int limit = 200;
//---- variables
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
IndicatorBuffers(1);
//---- drawing settings
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);
IndicatorShortName( "Antaria_Rising");
//---- initialization done
return(0);
}
int start()
{
int limit;
//ExtMapBuffer1[1] = ExtMapBuffer1[0];
//ExtMapBuffer1[0] = iController;
for(int i=(0); i<=(limit-1); i++)
{
ExtMapBuffer1 = ExtMapBuffer1;
}
ExtMapBuffer1[0] = iController;
return(0);
}[/CODE]
Above is the code for the indicator. Simply, it draws a line that should be updatable via the EA using the intiially mentioned code:
[CODE]temp = iCustom(NULL, 0, "AntariaRising", 200, 1.2, 0, 0); //temp not used. Function returns a doubleIch schätze, ich möchte den letzten Teil des Codes ersetzen, der es mir ermöglicht, die Variable, die verfolgt wird, im Incicator-Objekt zu aktualisieren, so dass ich sie später als Ausstiegslinie verwenden kann. Der restliche Code ist jedoch irrelevant. Wenn ich die obige Funktion ausführe, erwarte ich, dass Antaria die Position von 1,39 oder was auch immer sie anfängt, auf 1,2 verschiebt. Ich kann mich nicht erinnern, ob ich die 200-Variable verwende. Ich glaube, ich habe meine Kopf- und Fußzeilen-Kommentare herausgeschnitten, aber der gesamte Slave-Indikator ist dort oben, die AntariaRising in sofortigen obigen Code gemeint ist
Dies war die einzige Funktion, die ich finden konnte, die mit Indikatorobjekten spricht, und ich verwende sie, um Werte in anderen Bereichen abzulesen.
Zu Ihrem Indikatorcode. Er ist falsch.
Var. Grenze immer gleich Null.
Nehmen Sie die Zeichenkette weg:
int limit;
aus dem start().
Helfen Sie mir mit diesem Code pls
Ich möchte, dass mir jemand mit diesem Code hilft, er öffnet den Handel, wenn ich es will, aber schließt ihn automatisch, so dass ich möchte, dass er mit Stop-Loss handelt und nicht schließt, wenn er nicht wieder überquert wird.
//+------------------------------------------------------------------+
//| JR300.mq4 |
| onelove |
//| Forex Forum | Forex Tsd | Metatrader Forum |
//+------------------------------------------------------------------+
#Eigentum Copyright "oneLove"
#property link "https://www.forex-tsd.com"
//---- Eingabeparameter
extern double TakeProfit=250.0;
extern double Lots=0.1;
extern double TrailingStop=35.0;
//+------------------------------------------------------------------+
//| Experten-Initialisierungsfunktion |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Experten-Deinitialisierungsfunktion |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
int Gekreuzt (double line1 , double line2)
{
static int letzte_Richtung = 0;
static int aktuelle_Richtung = 0;
if(line1>line2)current_direction = 1; //oben
if(line1<line2)current_direction = 2; //abwärts
if(aktuelle_Richtung != letzte_Richtung) //geändert
{
letzte_Richtung = aktuelle_Richtung;
return (letzte_Richtung);
}
sonst
{
return (0);
}
}
//+------------------------------------------------------------------+
//| Expertenstartfunktion |
//+------------------------------------------------------------------+
int start()
{
//----
int cnt, ticket, total;
double shortEma, longEma;
if(Bars<100)
{
Print("Balken weniger als 100");
return(0);
}
if(TakeProfit<10)
{
Print("TakeProfit kleiner als 10");
return(0); // TakeProfit prüfen
}
shortEma = iMA(NULL,0,1,0,MODE_EMA,PRICE_CLOSE,0);
longEma = iMA(NULL,0,200,0,MODE_SMA,PREIS_SCHLIESSEN,0);
int isCrossed = Gekreuzt (shortEma,longEma);
total = OrdersTotal();
if(total < 1)
{
if(isCrossed == 1)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,
"Mein EA",12345,0,Grün);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print("BUY order opened : ",OrderOpenPrice());
}
else Print("Fehler beim Öffnen der BUY-Order : ",GetLastError());
return(0);
}
if(isCrossed == 2)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,
Bid-TakeProfit*Point, "Mein EA",12345,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print("SELL order opened : ",OrderOpenPrice());
}
else Print("Fehler beim Öffnen der SELL-Order : ",GetLastError());
return(0);
}
return(0);
}
for(cnt=0;cnt<gesamtzahl;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY) // Long-Position wird eröffnet
{
// sollte sie geschlossen werden?
if(isCrossed == 2)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
// Position schließen
return(0); // beenden
}
// Prüfung auf Trailing-Stop
if(NachlaufenderStop>0){
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-
Point*TrailingStop,OrderTakeProfit(),0,Green);
return(0);
}
}
}
}
else // auf Short-Position gehen
{
// soll sie geschlossen werden?
if(isCrossed == 1)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);
// Position schließen
return(0); // beenden
}
// Prüfung auf Trailing-Stop
if(NachlaufenderStop>0){
if((OrderOpenPrice()-Ask)>(Punkt*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) ||
(OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,
OrderTakeProfit(),0,Red);
return(0);
}
}
}
}
}
}
return(0);
}
//+------------------------------------------------------------------+
Versuchen Sie dies:
//| JR300.mq4 |
//| onelove |
//| Forex Forum | Forex Tsd | Metatrader Forum |
//+------------------------------------------------------------------+
#property copyright "oneLove"
#property link "https://www.forex-tsd.com"
//---- input parameters
extern double TakeProfit=250.0;
extern double StopLoss=100.0;
extern double Lots=0.1;
extern double TrailingStop=35.0;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
int Crossed (double line1 , double line2)
{
static int last_direction = 0;
static int current_direction = 0;
if(line1>line2)current_direction = 1; //up
if(line1<line2)current_direction = 2; //down
if(current_direction != last_direction) //changed
{
last_direction = current_direction;
return (last_direction);
}
else
{
return (0);
}
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
int cnt, ticket, total;
double shortEma, longEma;
if(Bars<100)
{
Print("bars less than 100");
return(0);
}
if(TakeProfit<10)
{
Print("TakeProfit less than 10");
return(0); // check TakeProfit
}
shortEma = iMA(NULL,0,1,0,MODE_EMA,PRICE_CLOSE,0);
longEma = iMA(NULL,0,200,0,MODE_SMA,PRICE_CLOSE,0);
int isCrossed = Crossed (shortEma,longEma);
total = OrdersTotal();
if(total < 1)
{
if(isCrossed == 1)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+ TakeProfit*Point,
"My EA",12345,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES ))
Print("BUY order opened : ",OrderOpenPrice());
}
else Print("Error opening BUY order : ",GetLastError());
return(0);
}
if(isCrossed == 2)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,
Bid-TakeProfit*Point,"My EA",12345,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES ))
Print("SELL order opened : ",OrderOpenPrice());
}
else Print("Error opening SELL order : ",GetLastError());
return(0);
}
return(0);
}
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY) // long position is opened
{
// should it be closed?
//if(isCrossed == 2)
//{
//OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet) ;
// close position
//return(0); // exit
//}
// check for trailing stop
if(TrailingStop>0){
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-
Point*TrailingStop,OrderTakeProfit(),0,Green);
return(0);
}
}
}
}
else // go to short position
{
// should it be closed?
//if(isCrossed == 1)
//{
//OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet) ;
// close position
//return(0); // exit
//}
// check for trailing stop
if(TrailingStop>0){
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) ||
(OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,
OrderTakeProfit(),0,Red);
return(0);
}
}
}
}
}
}
return(0);
}
//+------------------------------------------------------------------+Danke
Versuchen Sie dies:
//| JR300.mq4 |
//| onelove |
//| Forex Forum | Forex Tsd | Metatrader Forum |
//+------------------------------------------------------------------+
#property copyright "oneLove"
#property link "https://www.forex-tsd.com"
//---- input parameters
extern double TakeProfit=250.0;
extern double StopLoss=100.0;
extern double Lots=0.1;
extern double TrailingStop=35.0;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
int Crossed (double line1 , double line2)
{
static int last_direction = 0;
static int current_direction = 0;
if(line1>line2)current_direction = 1; //up
if(line1<line2)current_direction = 2; //down
if(current_direction != last_direction) //changed
{
last_direction = current_direction;
return (last_direction);
}
else
{
return (0);
}
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
int cnt, ticket, total;
double shortEma, longEma;
if(Bars<100)
{
Print("bars less than 100");
return(0);
}
if(TakeProfit<10)
{
Print("TakeProfit less than 10");
return(0); // check TakeProfit
}
shortEma = iMA(NULL,0,1,0,MODE_EMA,PRICE_CLOSE,0);
longEma = iMA(NULL,0,200,0,MODE_SMA,PRICE_CLOSE,0);
int isCrossed = Crossed (shortEma,longEma);
total = OrdersTotal();
if(total < 1)
{
if(isCrossed == 1)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+ TakeProfit*Point,
"My EA",12345,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES ))
Print("BUY order opened : ",OrderOpenPrice());
}
else Print("Error opening BUY order : ",GetLastError());
return(0);
}
if(isCrossed == 2)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,
Bid-TakeProfit*Point,"My EA",12345,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES ))
Print("SELL order opened : ",OrderOpenPrice());
}
else Print("Error opening SELL order : ",GetLastError());
return(0);
}
return(0);
}
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY) // long position is opened
{
// should it be closed?
//if(isCrossed == 2)
//{
//OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet) ;
// close position
//return(0); // exit
//}
// check for trailing stop
if(TrailingStop>0){
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-
Point*TrailingStop,OrderTakeProfit(),0,Green);
return(0);
}
}
}
}
else // go to short position
{
// should it be closed?
//if(isCrossed == 1)
//{
//OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet) ;
// close position
//return(0); // exit
//}
// check for trailing stop
if(TrailingStop>0){
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) ||
(OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,
OrderTakeProfit(),0,Red);
return(0);
}
}
}
}
}
}
return(0);
}
//+------------------------------------------------------------------+danke roger09 Gott segne Sie
Danke Roger, ich habe die zweite Grenzwertdeklaration aus meiner Startfunktion entfernt. Ich bin überrascht, dass der Compiler diese Deklaration zulässt, aber sie hat sich nicht merklich auf mein Programm ausgewirkt.
Dennoch weiß ich nicht, wie ich die laufende Instanz dieses Indikators in meinem EA ändern kann. Eine Methode wäre sehr willkommen, oder zumindest eine Bestätigung, dass die API es derzeit nicht erlaubt, Informationen an laufende Indikatoren zu übergeben.
Vielen Dank!
Ich bin dabei, den Code für den Indikator zu lernen, aber es hat nicht funktioniert. Es ist ein sehr zuverlässiger Indikator, und wenn jemand einen EA für ihn machen könnte, wäre das fast ein heiliger Gral.tia.
Das Grundprinzip ist:
1. Öffnen Sie eine Verkaufsposition, wenn der rote Pfeil erscheint,
2. Öffnen Sie eine Kaufposition, wenn ein weißer Pfeil erscheint und schließen Sie automatisch alle Verkaufspositionen.
3.gilt für jeden Zeitrahmen.
4.kein Stop-Loss,
5.add order Funktion.
Ich freue mich auf eine Antwort!
//+------------------------------------------------------------------+
//| IINWMARROWS.mq4 |
//| Basierend auf EMA_CROSS.mq4 |
//| Urheberrecht ?2006, MetaQuotes Software Corp. |
//| Devisenhandels-Software: Forex Handelsplattform MetaTrader 4 ||
//| Zuletzt geringfügig geändert von Iin Zulkarnain
//+------------------------------------------------------------------+
#Eigenschaft Copyright "Copyright ?2006, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
//----
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Weiß
#eigenschaft indicator_color2 Rot
#Eigenschaft indicator_width1 2
#eigenschaft indicator_width2 2
//----
double CrossUp[];
double CrossDown[];
extern int FasterMode=3; //0=sma, 1=ema, 2=smma, 3=lwma
extern int FasterMA= 3;
extern int LangsamerModus=3; //0=sma, 1=ema, 2=smma, 3=lwma
extern int SlowerMA= 3;
//+------------------------------------------------------------------+
//| Benutzerdefinierte Indikator-Initialisierungsfunktion |
//+------------------------------------------------------------------+
int init()
{
//---- Indikatoren
SetIndexStyle(0, DRAW_ARROW, EMPTY);
SetIndexPfeil(0, 233);
SetIndexPuffer(0, CrossUp);
SetIndexStyle(1, DRAW_ARROW, EMPTY);
SetIndexArrow(1, 234);
SetIndexBuffer(1, CrossDown);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Benutzerdefinierte Funktion zur Deinitialisierung des Indikators |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Benutzerdefinierte Indikator-Iterationsfunktion |
//+------------------------------------------------------------------+
int start()
{
int limit, i, zähler;
double fasterMAnow, slowerMAnow, fasterMAprevious, slowerMAprevious, fasterMAafter, slowerMAafter;
double Range, AvgRange;
int counted_bars=IndicatorCounted();
//---- Prüfung auf mögliche Fehler
if(gezählte_Balken<0) return(-1);
//---- zuletzt gezählte Balken werden neu gezählt
if(gezählte_Balken>0) gezählte_Balken--;
//----
limit=Balken-gezählt_Balken;
for(i=0; i<=limit; i++)
{
counter=i;
Range=0;
AvgRange=0;
for(counter=i ;counter<=i+9;counter++)
{
AvgRange=AvgRange+MathAbs(High[Zähler]-Low[Zähler]);
}
Range=AvgRange/10;
fasterMAnow=iMA(NULL, 0, FasterMA, 0, FasterMode, PRICE_CLOSE, i);
fasterMAprevious=iMA(NULL, 0, FasterMA, 0, FasterMode, PRICE_CLOSE, i+1);
fasterMAafter=iMA(NULL, 0, FasterMA, 0, FasterMode, PRICE_CLOSE, i-1);
//----
slowerMAnow=iMA(NULL, 0, SlowerMA, 0, SlowerMode, PRICE_OPEN, i);
langsamerMAvorher=iMA(NULL, 0, LangsamerMA, 0, LangsamerModus, PREIS_ÖFFNEN, i+1);
langsamerMAnach=iMA(NULL, 0, LangsamerMA, 0, LangsamerModus, PREIS_ÖFFNEN, i-1);
if ((fasterMAnow > slowerMAnow) && (fasterMAprevious slowerMAafter))
{
CrossUp=Low - Range*0.5;
}
else if ((schnellerMAjetzt langsamerMAvorher) && (schnellerMAjetzt < langsamerMAjetzt))
{
CrossDown=High + Range*0.5;
}
}
return(0);
}
//+------------------------------------------------------------------+dieser Thread, um zu lernen, wie man richtig programmiert, ich lerne programmieren fürKönnte jemand helfen, einen Alarm für diesen Indikator zu programmieren, der wirklich cool ist.
George's Oscar Calculator - Kann jemand einen Indikator dafür programmieren?
Hallo Leute,
Ich weiß nicht, ob jemand mit Forex Made-EZ von George Smith vertraut ist.
Ich bin gerade dabei, seine Arbeit zu überprüfen und frage mich, ob jemand einen Indikator für den von ihm verwendeten Oscar-Oszillator kodiert hat?
Die Formel lautet
A = das höchste Hoch der letzten acht Balken (einschließlich dieses Balkens)
let B = der tiefste Stand der letzten acht Balken (einschließlich dieses Balkens)
C = Schlusskurs des aktuellen Balkens
X = der vorherige Oszillatorwert (Oscar)
Der "grobe" Oszillator von heute ist gleich (C-B) geteilt durch (A-B) mal 100.
Als nächstes "glätten" wir unsere grobe Zahl (nennen wir sie Y) wie folgt:
Endgültige Oszillatorzahl = ((X geteilt durch 3) mal 2), plus (Y geteilt durch 3).
Wenn jemand dies entweder kodiert hat oder kodieren kann, wäre ich Ihnen sehr dankbar.
Mit freundlichen Grüßen Steve
Umgekehrter Trailing Stop
Hallo!
Ich brauche etwas Hilfe bei einer Idee.
Ich benutze Trailing Stops in meinen EAs (3 Step Trailing), aber ich möchte das invertierte Ding machen, um Verluste zu schützen.
Ich werde versuchen, zu erklären:
Ich eröffne einen Auftrag mit einem anfänglichen Stop-Loss.
Wenn der Handel 15 Pips in Richtung Verlust geht und 10 Pips zurückkommt, schließe ich den Handel (erster Schritt).
Wenn der Handel 30 Pips in die Verlustrichtung geht und 15 Pips zurückkommt, schließe ich den Handel (zweiter Schritt).
Etwa so.
Vielen Dank für die Hilfe
Hallo,
Ich möchte etwas Hilfe mit einer Idee.
Ich benutze Trailing-Stops auf meine EAs (3 Schritt Trailing), aber ich möchte die umgekehrte Sache zu tun, um Verluste zu schützen.
Ich werde versuchen, zu erklären:
Ich eröffne einen Auftrag mit einem anfänglichen Stop-Loss.
Wenn der Handel 15 Pips in Richtung Verlust geht und 10 Pips zurückkommt, schließe ich den Handel (erster Schritt).
Wenn der Handel 30 Pips in die Verlustrichtung geht und 15 Pips zurückkommt, schließe ich den Handel (zweiter Schritt).
Etwa so.
Danke für die HilfeDas ist etwas Neues für mich.
Also, der Verlust Handel Schließung immer warten müssen, bis es zurück prallen richtig?
Wie sieht es aus, wenn er nicht zurückkommt?
Schließen wir dann mit dem anfänglichen SL?