und werden Sie Mitglied unserer Fangruppe
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Bewerten Sie es im Terminal MetaTrader 5
YURAZ_MCCH Berechnung Indikator - Indikator für den MetaTrader 5
- Ansichten:
- 1000
- Rating:
- Veröffentlicht:
- 2016.06.29 09:30
- Aktualisiert:
- 2016.11.22 07:34
- Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance
Der Indikator berechnet % des Wachstums oder Falles Richtung SCHLUSSKURS. Es ist durch Einsatz von Objekt-orientierter Programmierung geschrieben und kann problemlos in jeden Expert Advisor oder anderen Indikator integriert werden.
- Der Indikator berechnet CH%, Prozentsatz der Änderung des SCHLUSSKURSES des vorherigen Tages.
- Erzeugt Objekte auf einem Chart. Der Indikator ist im Objekt-orientierten Programmierstil geschrieben.
- Es kann leicht in jeden Expert Advisor oder anderen Indikator integriert werden. Es reicht aus, eine Klasse zu beschreiben und seine Aktivierung zu veranlassen
Sie werden die in einen anderen Indikator oder Expert Advisor integrierte Codegröße schätzen.
Es gibt 2 Zeilen:
CChmcYZ chmc;
chmc.RCHsay("EURUSD",TimeCurrent()-86400*5,TimeCurrent(),5,16); // lassen Sie uns den aktuellen Tages CH% berechnen
Objekt-orientierte Programmierung bietet große Chancen, notwendige Klassen werden geschrieben und dann bauen Sie...
//+------------------------------------------------------------------+ //| yuraz_mcch.mq5 | //| Copyright 2009, MetaQuotes Software Corp. | //| http://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "2009, MetaQuotes Software Corp." #property link "http://www.mql5.com" #property version "1.00" #property indicator_chart_window ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Klasse Berechnung CH% // struct SymbolStruct { bool work; string sSymbol; int y; int x; double CH; }; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ class CChmcYZ { public: SymbolStruct sSymb; Farbe lColorSym; Farbe lColorChPlus; Farbe lColorChMinus; Farbe lColorCH; int indicatorWindow; // arbeite im Hauptfenster void CChmcYZ() { indicatorWindow=0; lColorSym=DarkBlue; // Dunkeltürkis lColorCH=DarkGreen; // Weiß; lColorChPlus = Green; // Hellgrün; lColorChMinus = FireBrick ; // Red; //--- Konstruktor void RCH(string sSym,datetime db,datetime de); // nur volle Berechnung eines Paares ohne Anzeige void RCHsay(string sSym,datetime db,datetime de,int X,int Y); // volle Berechnung eines Paares und seine Anzeige private: Farbe lColor; double dClose[7000]; // Array zum Kopieren der maximalen Preise }; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void CChmcYZ::RCH(string sSymbol,datetime DATEBEG,datetime DATEEND) { sSymb.CH = 0; int CountBar; DATEBEG = StringToTime( TimeToString(DATEBEG,TIME_DATE)); DATEEND = StringToTime( TimeToString(DATEEND,TIME_DATE)); CountBar= CopyClose(sSymbol,PERIOD_D1,DATEEND,2,dClose); if(CountBar>=0) { if(NormalizeDouble(dClose[1],5)!=0.0 && NormalizeDouble(dClose[0],5)!=0.0) { sSymb.CH=(dClose[1]*100)/dClose[0]-100; } } } //+------------------------------------------------------------------+ //| Berechnung der Entnahme //+------------------------------------------------------------------+ void CChmcYZ::RCHsay(string sSym,datetime db,datetime de,int XD,int YD) // volle Berechnung nur für ein Paar { RCH(sSym,db,de); if(ObjectFind(indicatorWindow,"oYZ"+sSym)==-1) { ObjectCreate(indicatorWindow,"oYZ"+sSym,OBJ_LABEL,indicatorWindow,0,0); ObjectSetInteger(indicatorWindow,"oYZ"+sSym,OBJPROP_XDISTANCE,XD); ObjectSetInteger(indicatorWindow,"oYZ"+sSym,OBJPROP_YDISTANCE,YD); ObjectSetInteger(indicatorWindow,"oYZ"+sSym,OBJPROP_CORNER,CORNER_LEFT_UPPER); ObjectSetString(indicatorWindow,"oYZ"+sSym,OBJPROP_TEXT,sSym); ObjectSetString(indicatorWindow,"oYZ"+sSym,OBJPROP_FONT,"Arial"); ObjectSetInteger(indicatorWindow,"oYZ"+sSym,OBJPROP_FONTSIZE,7); ObjectSetInteger(indicatorWindow,"oYZ"+sSym,OBJPROP_COLOR,lColorSym); ObjectSetInteger(indicatorWindow,"oYZ"+sSym,OBJPROP_SELECTABLE,true); } if(ObjectFind(indicatorWindow,"oYZ_"+sSym)==-1) { ObjectCreate(indicatorWindow,"oYZ_"+sSym,OBJ_LABEL,indicatorWindow,0,0); ObjectSetInteger(indicatorWindow,"oYZ_"+sSym,OBJPROP_XDISTANCE,XD+45); ObjectSetInteger(indicatorWindow,"oYZ_"+sSym,OBJPROP_YDISTANCE,YD); ObjectSetInteger(indicatorWindow,"oYZ_"+sSym,OBJPROP_CORNER,CORNER_LEFT_UPPER); ObjectSetString(indicatorWindow,"oYZ_"+sSym,OBJPROP_TEXT,sSym); ObjectSetString(indicatorWindow,"oYZ_"+sSym,OBJPROP_FONT,"Arial"); ObjectSetInteger(indicatorWindow,"oYZ_"+sSym,OBJPROP_FONTSIZE,7); ObjectSetInteger(indicatorWindow,"oYZ_"+sSym,OBJPROP_COLOR,lColorCH); ObjectSetInteger(indicatorWindow,"oYZ_"+sSym,OBJPROP_SELECTABLE,true); } YD=YD+11; lColor=lColorCH; if(sSymb.CH>0) { lColor=lColorChPlus; ObjectSetString(indicatorWindow,"oYZ_"+sSym,OBJPROP_TEXT," "+DoubleToString(sSymb.CH,5)); ObjectSetInteger(indicatorWindow,"oYZ_"+sSym,OBJPROP_XDISTANCE,XD+45); } if(sSymb.CH>0) { lColor=lColorChMinus; ObjectSetString(indicatorWindow,"oYZ_"+sSym,OBJPROP_TEXT,DoubleToString(sSymb.CH,5)); ObjectSetInteger(indicatorWindow,"oYZ_"+sSym,OBJPROP_XDISTANCE,XD+46); } ObjectSetInteger(indicatorWindow,"oYZ_"+sSym,OBJPROP_COLOR,lColor); } // // Ende der Klasse // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // Code in dem die Klasse verwendet wird // CChmcYZ chmc; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int OnInit() { //--- Indikatorbuffers Mapping chmc.RCHsay("EURUSD",TimeCurrent()-86400*5,TimeCurrent(),5,16); // lassen Sie uns den aktuellen Tages CH% berechnen chmc.RCHsay("AUDUSD",TimeCurrent()-86400*5,TimeCurrent(),5,16+12 ); chmc.RCHsay("GBPUSD",TimeCurrent()-86400*5,TimeCurrent(),5,16+12*2 ); chmc.RCHsay("USDCHF",TimeCurrent()-86400*5,TimeCurrent(),5,16+12*3 ); chmc.RCHsay("USDCAD",TimeCurrent()-86400*5,TimeCurrent(),5,16+12*4 ); return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double& low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { chmc.RCHsay("EURUSD",TimeCurrent()-86400*5,TimeCurrent(),5,16); // lassen Sie uns den aktuellen Tages CH% berechnen chmc.RCHsay("AUDUSD",TimeCurrent()-86400*5,TimeCurrent(),5,16+12 ); chmc.RCHsay("GBPUSD",TimeCurrent()-86400*5,TimeCurrent(),5,16+12*2 ); chmc.RCHsay("USDCHF",TimeCurrent()-86400*5,TimeCurrent(),5,16+12*3 ); chmc.RCHsay("USDCAD",TimeCurrent()-86400*5,TimeCurrent(),5,16+12*4 ); return(rates_total); } void OnDeinit() { int i=ObjectsTotal(0); // Unsere Objekte entfernen while( i > 0 ) { if(StringSubstr(ObjectName(0,i ),0,3)=="oYZ") { ObjectDelete(0,ObjectName(0,i )); } i--; } }
Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/11347
Ein Signalindikator der den Algorithmus der Kreuzung zweiter gleitender Durchschnitte von zwei aufeinanderfolgenden Durchschnitten verwendet.
Exp_MaByMaDer Exp_MaByMa EA basiert auf den Signalen des MaByMa Trend Indikators.
Schließen aller Positionen mit einem Klick oder Schließen aller Positionen nach Erhalt eines als Prozentsatz der Einlage angegebenen Profits.
Channel TrailingEA zum Nachziehen entlang eines Preiskanals.