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
Hallo zusammen,
Ich arbeite daran, eine Währungsstärkeanzeige zu modifizieren, um die Stärke der Währung basierend auf der Zeit des Charts anzuzeigen. Zurzeit ist der Code verwendet:
aLow = MarketInfo(mySymbol,MODE_LOW); // set a low today
aBid = MarketInfo(mySymbol,MODE_BID); // set a last bid
aAsk = MarketInfo(mySymbol,MODE_ASK);Soweit ich weiß, liefern MODE_HIGH und MODE_LOW die Höchst- und Tiefstwerte des aktuellen Tages. Wie könnte ich stattdessen die Höchst- und Tiefstwerte des aktuellen Zeitrahmens des Charts abrufen?
Vielen Dank!
P.S. Ich bin kein Programmierer, also bitte kleine Worte verwenden:)Sie müssen MarketInfo() nicht verwenden. Wenn Sie das aktuelle Hoch erhalten möchten, verwenden Sie High[0] und Low[n], Close[n], Open[n]. n' steht für den Abstand zum aktuellen Balken. Um zum Beispiel das Hoch des Leistens vor dem aktuellen Leisten zu erhalten, können Sie High[1] verwenden, da der aktuelle Leisten 0 ist und der Leisten davor einen Offset von 1 zum aktuellen Leisten hat.
Um die Hochs, Tiefs, Eröffnungen und Schließungen anderer Zeitrahmen zu ermitteln, können Sie die Funktionen iHigh(), iLow(), iClose() und iOpen verwenden.
Beispielhafte Verwendung unten.
double high_of_gbpusd_4hours_current = iHigh("gbpusd", period_h4, 0);
Danke! Ihr Jungs rockt!
Ich glaube, ich habe es ziemlich viel arbeiten (nicht sicher??), aber aus irgendeinem Grund das Array wird mit einer Menge von '0' Werte zusammen mit den legitimen Werten gefüllt.
So würde ich es machen:
#define TICKET 0
#define PRICES 1
double ResumeArray[0,2];
int CheckForResume()
{
ResumeCheck = TimeLocal()+(PERIOD_M1*60)*5;
bool success = false;
int k;
for (int i = 0; i<OrdersTotal();i++)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))continue;
if (OrderType() > OP_SELL || OrderProfit()> Cutoff)continue;
int arraycount=ArrayRange(ResumeArray,TICKET);
bool found = false;
for (k=arraycount-1; k>=0; k--)
{
if (ResumeArray[k,TICKET] == OrderTicket())
{
found = true;
if (ResumeArray[k,PRICES] + Cutoff < OrderProfit())break;
else
{
success=true;
Print ("ELSE");
ResumeArray[k,PRICES] = OrderProfit();
break;
}
}
}
if (found == false)
{
arraycount = ArrayResize(ResumeArray,arraycount+1)/2;
ResumeArray[arraycount-1,TICKET] = OrderTicket();
ResumeArray[arraycount-1,PRICES] = OrderProfit();
success=true;
}
}
if(success)return (1);
else return(0);
}
Sie müssen die Definitionen TICKET und PRICES nicht verwenden, ich habe sie nur eingefügt, um zu zeigen, wie ein 2-dimensionales Array funktioniert. Ersetzen Sie einfach alle Vorkommen von TICKET und PRICES durch 0 bzw. 1.
Ich habe die 'return'-Befehle in der 'for'-Schleife durch 'break' ersetzt, so dass alle offenen Aufträge verarbeitet werden.
Zu beachten ist, dass geschlossene Aufträge nie aus dem Array entfernt werden, so dass es immer größer wird und Ihre Plattform verlangsamt.
d4v3
Begrenzung der Balkenhistorie
Ich wäre sehr dankbar, wenn jemand dem RenkoLiveChart_v3.2 Skript die Option "Bars Limit" hinzufügen könnte.
Es nimmt zu viel Computer-Ressourcen.
Basic Alerting EA
................[gelöst] ....................
Rauschunterdrückung
Hallo zusammen - Ich habe nach einer Möglichkeit gesucht, das Rauschen bei einem Handel zu begrenzen und einen schnelleren Cutoff zu machen
Die Idee ist eigentlich ganz einfach
das Rauschen wird in diesem Bild gezeigt, es ist dynamisch, d.h. es ändert sich ständig, um den Marktbedingungen zu entsprechen
Hier ist ein Code, den ich für den Abschluss erstellt habe, wenn ihn jemand verwenden möchte, muss er nur noch mit einigen Multiplikatoren versehen werden.
int Trades = ScanTrades(0,0);
wenn (Trades == 0) TS1 = 0;
if ((ScanTrades(2,0) > 0) && (Gewinn < 0)) TS= ((MarketInfo(Symbol(),MODE_BID)) + Rauschen + Slippage);
if ((ScanTrades(2,0) > 0) && (Gewinn > 0)) TS= ((MarktInfo(Symbol(),MODE_BID)) + Rauschen );
if ((ScanTrades(1,0) > 0) && (Gewinn < 0)) TS= ((MarktInfo(Symbol(),MODE_BID)) - noise - Slippage);
if ((ScanTrades(1,0) > 0) && (Gewinn > 0)) TS= ((MarktInfo(Symbol(),MODE_BID)) - Rauschen );
//short
if ((ScanTrades(2,0) > 0)&& (TS1 ==0 )) TS1 = TS;
wenn ((ScanTrades(2,0) > 0)&& (TS < TS1)) TS1 = TS;
if ((ScanTrades(2,0) > 0) && (MarketInfo(Symbol(),MODE_BID) > TS1)) CloseOrder(2);
//Lang
wenn ((ScanTrades(1,0) > 0)&& (TS1 ==0 )) TS1 = TS;
wenn ((ScanTrades(1,0) > 0)&& (TS > TS1)) TS1 = TS;
if ((ScanTrades(1,0) > 0) && (MarketInfo(Symbol(),MODE_BID) < TS1)) CloseOrder(1);
Was wäre der beste Weg, um den aktuellen und den vorherigen Höchst- und Tiefstwert aus einem Balkendiagramm zu erhalten? Ich muss die Variable "noise" erstellen.
Ich habe versucht, ths aber seine hit and miss t1 und l1 sind manchmal 0 seine deprimierendsten wie seine alles, was steht zwischen der ganzen ea wird "fertig", wenn es jemals so etwas gibt.
double ll2=Low;
double hh3=Hoch;
double ll3=Low;
double t1,l1,noise;
//Rauschen = Überlappung der vorherigen Takte
wenn ((hh2 - hh3) > 0 ) t1 =(hh3); //grundsätzlich wird der niedrigste "hohe" Balken zwischen den beiden ausgewählt -bullisch
wenn ((hh3- hh2) > 0 ) t1=(hh2); //bärisch
wenn ((ll2 - ll3) > 0 ) l1 =(ll2); //Auswahl des höchsten Tiefstkurses bullish
wenn ((ll3-ll2) > 0 ) l1=(ll3); //bärisch
Rauschen =(t1-l1);
Print("t1 = ",t1,"; l1 = ",l1);die typischen Ergebnisse der Druck sind t1=0 l1=94.3 seine ärgerlichsten, weil hh2 und hh3 sind == ich weiß einfach nicht, was zu tun ist ich kann nicht sehen, ein Problem mit meinem Code.
Wer kann mir helfen?
Kann mir jemand zeigen, wie man einen neuen Indikator erstellt, der auf 3 bekannten Indikatoren basiert? Ich mache eine Strategie, die auf 3 Indikatoren basiert, die sehr starke Kauf/Verkaufssignale zeigen, aber ich möchte 1 Indikator erstellen...
ea-Änderung bitte
Bitte helfen Sie mir, die folgenden Änderungen an dieser Ea vorzunehmen
1) Fügen Sie in der Stunde
A) fisher_ 11 Indikator mit den Einstellungen 33,0.5,0.5
B) tcf geglättet Indikator Einstellungen 17, 8, 0.7
c) Außerdem möchte ich, dass der dinap _basic Indikator keine Trades zulässt, wenn er entgegen der Signalrichtung gezogen hat, d.h. wenn er nach oben zieht, sind Kaufsignale NICHT erlaubt, wenn er nach unten zieht, sind Verkaufssignale NICHT erlaubt.
2) Fügen Sie in 15 Minuten hinzu
A) Supertrend-Indikator
B) Trendlord-Indikator
Geldmanagement von
1) Eröffnen Sie 2 Trades mit jeweils 3 % Stop Loss der Kontosumme (1,5%)
2) Eine mit 80 Pips Take Profit oder 2,2 % und die zweite mit 3,8 % Take Profit
3) Verdoppelung der Losgröße für den fünften Handel nach 4 aufeinanderfolgenden Verlusten, dann lineare Erhöhung der Losgröße für die folgenden Handelsgeschäfte bis zu zwei aufeinanderfolgenden Gewinnen und Rückkehr zur Standard-Losgröße.
4) Trailing-Stop von 12pips (oberhalb für Verkauf und unterhalb für Kauf der ehemaligen Kerze atrstops_v1 Indikator für alle Trades.
Das ist alles, bitte helfen Sie mir
Sie hätten genau dasselbe mit einer Zeile Code erreichen können.
GlobalVariableSet("TRENDSET_"+Symbol());
Sie könnten auch den Zeitrahmen hinzufügen, um es noch einzigartiger zu machen.
Um ehrlich zu sein, bin ich mir nicht ganz sicher, was der Sinn Ihres Beitrags war.
Mit freundlichen Grüßen
Lux
Wie rufe ich einen Wert aus H1 mit iCustom auf?
Hallo,
Ich versuche, einen sehr einfachen Indikator zu programmieren, aber ich bin nicht in der Lage, den Laguerre-Wert von H1 abzurufen.
was ich tun möchte:
Mit 1M TF
Kaufsignal: Laguerre Kreuzung 0,15 Ebene Kopf nach oben und Laguerre H1 > 0,75
Verkaufssignal: Laguerre kreuzt 0.75 Level Kopf unten und Laguerre H1 < 0.15
Ich habe den Indikator für die einfache Kreuzung und es funktioniert, das Problem ist, wenn ich versuche, den Wert von Laguerre H1 zu überprüfen: es ist ein Durcheinander!
Ich habe 2 Möglichkeiten ausprobiert:
Die erste:
#property indicator_buffers 2
#property indicator_color1 SeaGreen
#property indicator_color2 Red
#property indicator_width1 3
#property indicator_width2 3
double CrossUp[];
double CrossDown[];
extern bool SoundON=true;
double alertTag;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0, DRAW_ARROW, EMPTY,3);
SetIndexArrow(0, 233);
SetIndexBuffer(0, CrossUp);
SetIndexStyle(1, DRAW_ARROW, EMPTY,3);
SetIndexArrow(1, 234);
SetIndexBuffer(1, CrossDown);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start() {
int limit, i;
int counted_bars=IndicatorCounted();
//---- check for possible errors
if(counted_bars<0) return(-1);
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
for(i = 0; i <= limit; i++) {
if ( (iCustom(NULL,0,"Laguerre",0.66,9500,0,i) > 0.15) && (iCustom(NULL,0,"Laguerre",0.66,9500,0,i+1) < 0.15)
&&(iCustom(Symbol(),PERIOD_H1,"Laguerre",0.66,9500,0,i) > 0.75)) //check for buy signal
{
CrossUp = Close;
}
else if ( (iCustom(NULL,0,"Laguerre",0.66,9500,0,i) 0.75)
&& (iCustom(Symbol(),PERIOD_H1,"Laguerre",0.66,9500,0,i) < 0.15)) //check for sell signal
{
CrossDown = Close;
}
if (SoundON==true && i==1 && CrossUp > CrossDown && alertTag!=Time[0]){
Alert("SHORT signal on ",Symbol()," ",Period());
alertTag = Time[0];
}
if (SoundON==true && i==1 && CrossUp < CrossDown && alertTag!=Time[0]){
Alert("Long Signal on ",Symbol()," ",Period());
alertTag = Time[0];
}
}
return(0);
}[/CODE]
second one:
[CODE]//+------------------------------------------------------------------+
//| Shift.mq4 |
//| me |
//|
//+------------------------------------------------------------------+
#property copyright "me"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Red
#property indicator_width1 4
#property indicator_width2 4
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
bool Fact_Up = true; // Fact of report that market..
bool Fact_Dn = true; //..is bullish or bearish
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0,DRAW_ARROW);
SetIndexArrow(0,241);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexEmptyValue(0,0.0);
SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(1,242);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexEmptyValue(1,0.0);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
//int limit;
int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
if(counted_bars<0) return(-1);
//limit=Bars-counted_bars;
//----
double MA; // MA value on 0 bar
double MA2;
double MA3;
double MA4;
//--------------------------------------------------------------------
double value1, value2, value3;
for (int i=Bars-1;i>=0;i--)
//---- main loop
//for(int i=0; i<limit; i++)
{value1=0.0;
value2=0.0;
value3=0.0;
//--------------------------------------------------------------------
// Checking if bullish
if( (iCustom(Symbol(),NULL,"Laguerre",0,i) > 0.15) && (iCustom(Symbol(),NULL,"Laguerre",0,i+1) < 0.15) && Fact_Up == true
&&(iCustom(Symbol(),PERIOD_H1,"Laguerre",0,i) > 0.75))
{
Fact_Dn = true; // Report about bullish market
Fact_Up = false; // Don't report bullish market
// Alert("BUY SIGNAL.");
value1=Open;
}
//--------------------------------------------------------------------
// Checking if bearish
if( (iCustom(Symbol(),NULL,"Laguerre",0,i) 0.75) && Fact_Dn == true
&&(iCustom(Symbol(),PERIOD_H1,"Laguerre",0,i) < 0.15))
{
Fact_Up = true; // Report about bearish market
Fact_Dn = false; // Don't report bearish market
// Alert("SELL SIGNAL.");
value2=Open;
}
ExtMapBuffer1=value1;
ExtMapBuffer2=value2;
}
//----
return(0);
}
//+------------------------------------------------------------------+beide funktionieren nicht, die ROTE Linie ist das Problem, ohne die ROTE Linie funktioniert es perfekt.
Ich habe versucht (iCustom(Symbol(),PERIOD_H1, "Laguerre",0,i) < .....)
(iCustom(Symbol(),PERIOD_H1, "Laguerre",0,0) < ....)
(iCustom(Symbol(),60, "Laguerre",0,i) < ....)
(iCustom(Symbol(),60, "Laguerre",0,0) < .....)
Ich habe es auch mit Variablen versucht: (iCustom(Symbol(),PERIOD_H1, "Laguer re",0.66,9500,0,i)
iF i put:
Print(iCustom(Symbol(),60, "Laguerre ",0,i)); vor dem "if" gibt es eine Zufallszahl...
aber mit: Print(iCustom(Symbol(),60, "Laguerre ",0,0)); es gibt den guten Wert von H1 zurück
Jetzt bleibt das Problem dasselbe, wenn ich iCustom(Symbol(),60, "Laguerre",0,0); innerhalb des "if" verwende, funktioniert es nicht...
das Problem ist mit dem "for" und "i" und dem iCustom "shift" Wert, aber ich kann es nicht herausfinden.
Ihre Hilfe wäre sehr willkommen!
Ich habe den Laguerre-Indikator angehängt, den ich verwende, wenn Sie ihn ausprobieren möchten.
Wenn jemand bereit ist, es von Grund auf neu zu programmieren, zögern Sie bitte nicht.
es macht mich wahnsinnig...