[Archiv!] Ich schreibe einen Ratgeber für FREE - Seite 13

 

Hallo!

Kann jemand, der weiß, wie man richtig verschreiben die folgenden in den Code:

Es gibt einen Indikator MACD Histogramm WIS. Das Histogramm wird in seinem Code berechnet und die Balken werden in verschiedenen Farben gefärbt, je nach Richtung der Linie und dem Filter macd.

int start()
{
int limit,i;
int counted_bars = IndicatorCounted();

if(counted_bars > 0) counted_bars--;
limit = iBars(NULL,0) - counted_bars;

BufferResize(Filter);
BufferResize(Histogram);

for(i = 0; i <= limit; i++)
MACD[i] = iMA(NULL, 0, FastMA, 0, MAMethod, MAAppliedPrice, i) - iMA(NULL, 0, SlowMA, 0, MAMethod, MAAppliedPrice, i);
for(i = 0; i <= limit; i++)
Signal[i] = iMAOnArray(MACD, iBars(NULL,0), SignalMA, 0, MAMethod, i);
for(i = 0; i <= limit; i++)
Histogramm[i] = MACD[i] - Signal[i];
CalcFilter(Line, limit);
for(i = limit; i >= 0; i--)
{
if(Histogram[i] > Histogram[i+1] && Filter[i] > Filter[i+1])
{
HistogramWaitClose[i] = 0.0;
HistogramSell[i] = 0.0;
HistogramBuy[i] = Histogram[i];
}
if(Histogram[i] < Histogram[i+1] && Filter[i] < Filter[i+1])
{
HistogramWaitClose[i] = 0.0;
HistogramSell[i] = Histogram[i];
HistogramBuy[i] = 0.0;
}
if((Histogramm[i] >= Histogramm[i+1] && Filter[i] <= Filter[i+1]) || (Histogramm[i] <= Histogramm[i+1] && Filter[i] >= Filter[i+1])
{
HistogramWaitClose[i] = Histogram[i];
HistogramSell[i] = 0.0;
HistogramBuy[i] = 0.0;
}
}

return(0);
}

Ich versuche, in der Expert Advisor, eine der Bedingungen, die Eröffnung von Positionen nach oben, wenn vorzuschreiben:

if(Histogram[i] > Histogram[i+1] && Filter[i] > Filter[i+1])
{
HistogramWaitClose[i] = 0.0;
HistogramSell[i] = 0.0;
HistogramBuy[i] = Histogram[i];

aber ich brauche nur 2 geschlossene Balken zu vergleichen, dh die erste und zweite (Null nicht berühren), nicht alle (i-Balken), dh müssen die erste und die zweite Bar zu vergleichen, und wenn die Balkengrafik der ersten Bar größer als die zweite und erfüllt mit Filtern und anderen Bedingungen des EA, kaufen, um das Gegenteil zu verkaufen .... wie man es richtig zu verschreiben, bitte beraten, Tee-gelernten Amateur)

Vielen Dank

 
kvg31:

Ich werde einen Ratgeber von beliebiger Komplexität schreiben. Die Hauptsache ist, dass man eine gute Idee hat. Wie Sie es verwenden werden, ist mir egal: verkaufen - ist mir egal (ich werde kein Geld verlangen).

P. S. Wenn Sie einen Indikator benötigen, müssen Sie mir die Strategie nennen, in der Sie ihn verwenden wollen.


Ich habe keine Ahnung vom Programmieren und bin ein Anfänger.

Vielleicht haben diese Berater bereits, im Allgemeinen, so:

Nach dem Prinzip der "oszillierenden" zwei EMA Kreuzung schließt die vorherige öffnet eine neue, EMA sollte variabel sein.

Ich denke, dass H1, H4 ziemlich relevant ist.

 
riabusha:


Vielleicht gibt es bereits einen solchen EA, und so funktioniert er:

Nach dem Prinzip des "Rollover", d.h. der Kreuzung zweier EMAs, die den vorherigen EMA schließt und einen neuen öffnet, sollten die EMAs variabel sein.

Ich denke, dass H1, H4 ziemlich relevant ist.

Ja, es handelt sich um den gleitenden Durchschnitt, der standardmäßig im MT4-Paket enthalten ist. Es handelt sich aber nicht um einen EMA, sondern um einen SMA (Simple Moving Average), was aber nichts an der Sache ändert. Natürlich können wir die Art der MA in der EA ändern oder sogar verschieben sie auf externe Parameter, aber es wird nicht zu einem Gral.
 

Hallo.

Bitte machen Sie einen einfachen Expert Advisor, der einen Auftrag für eine bestimmte Anzahl von Punkten öffnet und wenn der Preis sie überschritten und in der + Seite geschlossen hat, schließt sich der Auftrag und öffnet sich wieder in der Plus-Seite. Befindet er sich in einer Minusposition, kehrt er in die Minusposition zurück.

Einzustellende Parameter - Größe der Partie und Anzahl der zu übergebenden Punkte.

Vielen Dank im Voraus.

Mit freundlichen Grüßen Dimitriy.

 
kvg31:

Ich werde einen Ratgeber von beliebiger Komplexität schreiben. Die Hauptsache ist, dass man eine gute Idee hat. Wie Sie es verwenden werden, ist mir egal: verkaufen - ist mir egal (ich werde kein Geld verlangen).

P. S. Wenn Sie einen Indikator benötigen, müssen Sie mir mitteilen, in welcher Strategie Sie ihn verwenden wollen.


Hallo liebe Entwickler. Bitte helfen Sie mir, einen Indikator zu erstellen, der auf dem SSL_fast_sBar_mtf Indikator basiert.

Ich möchte, dass zwei "Lineale" gezeichnet werden, eines mit dem Wert "Lb" größer und ein anderes mit einem kleineren Wert (oder TIME FREAM größer und kleiner). Wenn auf der Leiste die Farben

Wenn beide "Lineale" gleich sind (und auf dem vorherigen waren sie unterschiedlich), dann sollten Sie zu Beginn des nächsten Taktes das Signal zum Öffnen geben (den Pfeil setzen).

Pfeile sollten mit Indikatorpuffern gezeichnet werden, nicht mit grafischen Objekten. Die Daten der beiden "Lineale" werden im Fenster der externen Parameter benötigt

(zur weiteren Auswahl ihrer Parameter).

 

http://savepic.ru/1965498.gif

Ich weiß nicht, wie ich einen Link zu dem Indikator senden kann. Sie befindet sich in der MQL4.com-Bibliothek

 

Guten Tag!

Ich bitte sehr darum, einen Experten zu machen (ich bin ja kein Programmierer) :((.

Technische Parameter:
1) Wir arbeiten auf einem 4-Stunden-Candlestick-Chart, indem wir zwei Linien kreuzen , die den Durchschnitt verschieben: eine(rot) Periode 18, Methode Exponential, zu denSchlusskursen, bzw.(gelb) Periode 8, Methode ebenfalls Exponential, zu den Schlusskursen.

2) Handelsgröße 1 Lot

3) Wir arbeiten von Kreuzung zu Kreuzungslinie. Sobald diegelbe Linie die rote Linie(Rot) in Aufwärtsrichtung (Norden) kreuzt, Kaufauftrag, zweite Kreuzung der Linien, gelbe Linie kreuzt entsprechend die rote von oben nach unten - Fixierung des offenen Auftrags, bei gleichzeitiger Eröffnung eines neuen Verkaufsauftrags, und so weiter.

4) Ein Stop-Loss von 35 Punkten wird für alle Trades gesetzt.

Der 4-Stunden-Chart ermöglicht es Ihnen, unnötige Bewegungen zu vermeiden, im Gegensatz zum Stunden-Chart, der mit Sicherheit funktioniert.

Wenn man nur die Währungspaare betrachtet, rechtfertigt sich die Idee (keine verlustbringenden Trades, schlimmstenfalls um die Null), natürlich sollte man den Trend berücksichtigen und den Expert Advisor verwenden, während man ihn im Auge behält. Wenn wir beispielsweise für das Paar EUR/USD am 1. September +139 Punkte kaufen, bevor wir +115 Punkte überschreiten, kaufen wir erneut, bevor wir am 12. Oktober +1184 Punkte überschreiten. Nehmen Sie August das gleiche Bild +368 Punkte Verkauf, dann kaufen Verkauf auf dem gleichen Niveau ohne Verluste und +181 Punkte nach unten auf Gewinn verkaufen. Weiter, zum Beispiel Gold GOLD(die Kommission ist 70 Punkte, aber der Punkt ist 2,5 Dollar pro Lot) und so von August, 31. kaufen +1789 Punkte, auf einmal verkaufen +547 Punkte, +4557 Punkte kaufen, verkaufen Null, +4328 kaufen, verkaufen Null und bis zu diesem Wochenende wieder +3636 Punkte.

Mit freundlichen Grüßen, Yuriy

 
Hallo! Leute, ich kann nicht herausfinden, mql4(( Ich möchte eine kleine EA auf zwei EMAs (gleitende Durchschnitte), die einen Signalton nach der Kreuzung geben zu schreiben? Können Sie mir etwas über dieses Programm sagen? Vielen Dank im Voraus !!!
 
silmin85:
Hallo! Leute, ich kann nicht herausfinden, mql4(( Ich möchte eine kleine EA auf zwei EMAs (gleitende Durchschnitte), die einen Signalton nach der Kreuzung geben zu schreiben? Können Sie mir etwas über dieses Programm sagen? Vielen Dank im Voraus !!!
Nehmen Sie den im Paket enthaltenen gleitenden Standarddurchschnitt als Grundlage und experimentieren Sie damit. Sie können MA durch EMA ersetzen.
 
goldtrader:
Nehmen Sie den mitgelieferten gleitenden Standarddurchschnitt als Grundlage und experimentieren Sie damit. Sie können den MA durch den EMA ersetzen.
Die Sache ist, ich möchte eine einfache EA, die bei jeder Kreuzung der beiden EMAs gibt einen Piepton! MetaTradere hat einen Gleitenden Durchschnitt.mq4 in Experten

Hier ist die vollständige Beschreibung:

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

//| Gleitender Durchschnitt.mq4 |
//| Copyright © 2005, MetaQuotes Software Corp.
//| http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#define MAGICMA 20050610

extern double Lots = 0.1;
extern double MaximumRisk = 0,02;
extern double DecreaseFactor = 3;
extern double Gleitende Zeitspanne = 12;
extern double MovingShift = 6;
//+------------------------------------------------------------------+
Offene Positionen berechnen //|
//+------------------------------------------------------------------+
int CalculateCurrentOrders(string symbol)
{
int buys=0,sells=0;
//----
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
{
if(OrderType()==OP_BUY) kauft++;
if(OrderType()==OP_SELL) sells++;
}
}
//---- Rücksendeauftragsvolumen
if(Käufe>0) return(Käufe);
sonst return(-sells);
}
//+------------------------------------------------------------------+
//| Berechnung der optimalen Losgröße |
//+------------------------------------------------------------------+
double LotsOptimized()
{
Doppellose=Lose;
int orders=HistoryTotal(); // Summe der historischen Aufträge
int losses=0; // Anzahl der Verlustaufträge ohne Pause
//---- Losgröße auswählen
lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1);
//---- berechnet die Anzahl der Verlustaufträge ohne Unterbrechung
if(DecreaseFactor>0)
{
for(int i=Bestellungen-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Fehler in der Historie!"); break; }
if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) weiter;
//----
if(OrderProfit()>0) break;
if(OrderProfit()<0) Verluste++;
}
if(Verluste>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
}
//---- return lot size
if(lot<0.1) lot=0.1;
zurück(lot);
}
//+------------------------------------------------------------------+
//| Prüfung auf offene Auftragsbedingungen |
//+------------------------------------------------------------------+
void CheckForOpen()
{
Doppel-Ma;
int res;
//---- go trading nur für die ersten Ticks der neuen Bar
if(Volumen[0]>1) return;
//---- get Gleitender Durchschnitt
ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);
//---- Verkaufsbedingungen
if(Open[1]>ma && Close[1]<ma)
{
res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,0,",MAGICMA,0,Red);
Rückkehr;
}
//---- Kaufbedingungen
if(Open[1]<ma && Close[1]>ma)
{
res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,",MAGICMA,0,Blue);
Rückkehr;
}
//----
}
//+------------------------------------------------------------------+
//| Prüfung auf enge Auftragsbedingungen |
//+------------------------------------------------------------------+
void CheckForClose()
{
Doppel-Ma;
//---- go trading nur für die ersten Ticks der neuen Bar
if(Volumen[0]>1) return;
//---- get Gleitender Durchschnitt
ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);
//----
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) weiter;
//---- Auftragsart prüfen
if(Auftragsart()==OP_BUY)
{
if(Open[1]>ma && Close[1]<ma) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
Pause;
}
if(OrderType()==OP_SELL)
{
if(Open[1]<ma && Close[1]>ma) OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
Pause;
}
}
//----
}
//+------------------------------------------------------------------+
//| Startfunktion |
//+------------------------------------------------------------------+
void start()
{
//---- check für Geschichte und Handel
if(Bars<100 || IsTradeAllowed()==false) return;
//---- berechnet offene Aufträge nach aktuellem Symbol
if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
sonst CheckForClose();
//----
}

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

Ich verstehe nicht, wie ich das hier ändern kann, damit es für mich funktioniert! Ich will nur 50EMA und 100EMA und einen Piepton bei jeder Kreuzung!!!