النتائج 91 إلى 105 من 131
الموضوع: اكسبرت جديد ونتائج طيبه DIN KUSKUS
- 09-03-2007, 08:18 PM #91
رد: اكسبرت جديد ونتائج طيبه DIN KUSKUS
هاي الانديكيتر هي جزء من تريدنج سيستم هو دولي وسمي دولي لانه نسخه لكن محسنه عن
نظام الوينج سلويوشن والذي يجب ان تشتريه لكن دولي كنظام افضل وببلاش
الفضل لله اولا ثم للاخوان المبرمجين ومنهم cja الشرح يطول عن كل انديكيتر لكن هم ببساطه للدلاله على حركة السوق والترند
مزيد من المعلومات توجد هنا
http://www.forex-tsd.com/dolly/5101-...e-project.html
http://www.forex-tsd.com/tools-utili...on-helper.html
بصراحه انا للتريد لا استخدم سوى خطوط الترند و الفيبوناتشي و
boilinger bands
لاني لحد الان لم اجد اكسبرت 100 % وهذا كان واحد من الاسباب انا عملنا الاكسبرت din
ارجو ان نكون موفقين بهذه الاكسبرت
- 09-03-2007, 09:05 PM #92
رد: اكسبرت جديد ونتائج طيبه DIN KUSKUS
شكرا للاخ سرور وانشاء الله اتكون ايامك كلها سرور
مرفق نتائج الاسبوع الاول
افضل زوج للان هوا GBP/CHF
AUD/US
يليه GBP/JAP
يليه USDJAP
طبعا لاني قاعد اعمل تست لعدة ازواج وايضا لعده اكسبرت لااستطيع ان اختبر اكتر من اكسبرت على نفس الزوج
These are the pairs I am testing ... so far it seems the best pairs are GBP/CHF being tested with v1.8
next is GBP/JAP v2.4
then USDJAP v2.4
i have office 2007 so I saved the excel file as different format so anyone can openآخر تعديل بواسطة minime ، 09-03-2007 الساعة 09:11 PM
- 09-03-2007, 09:38 PM #93
رد: اكسبرت جديد ونتائج طيبه DIN KUSKUS
بناء على طلب بعض الاخوه الاسبوع القادم ساعمل تيست من اول وجديد
السيتنج كالتلي
حجم اللوت واحد وهذا لا يفرق بشي لانه المني مانجمنت بيتولى حجم اللوت
ساشغل الماركت الامريكي لاوى التاثير على الاكسبرت
نفس الازواج الموجود بالاكسل وبنفس الاكسبرت المدون جنب كل زوج
ساشغل التريل ستوب
حجم الاستثمار 10000
البروكر انتر بانك يعني الوقت الموجود بالاكسبرت اطرح منه ساعتين
الاكاونت ستاندرد
وباالله بالتوفيق ان شاء الله
- 09-03-2007, 10:49 PM #94
- 10-03-2007, 03:06 AM #95
رد: اكسبرت جديد ونتائج طيبه DIN KUSKUS
انتظر اخي سرور حتى نتاكد من فعالية الاكسبرت وعلى اي زوج افضل
ان شاء الله الاختبارات على الاكسبرت ستستمر لمدة اسبوعين اخرين
انا فعلا مشغل الاكسبرت على حساب حقيقي لكن فقط بالحسلب 100 دولار
السبب في اخياري حساب حقيقي لاني احب ان اكون جدي بالاختبار والسبب التاني انا لا اغامر بمبلغ كبير للاختبار
ولا انصح الان بان تعمل تجارب على حسلب حقيقي لاني لا احب ان اكون السببب في خساره اي انسان فاضل متلك
افضل ان تنتظر النتائج خلال الاسبوعين القادمين وللعلم الاخوان ايضا( الاخ سمير ) بيعملوا تجارب ولكن كانت النتائج ليست بجيده فاريد ان اعرف ان كان هناك خلل او نقاط ضعف لتفاديها وان شاء الله ساقوم بنشر النتائج مع التوصيات وايضا الاخوان سينشروا النتائج باذن الله
فصبر جميل يا اخ سرور كلها اسبوعين
مع تمنياتي لك بالتوفيق
ابو ليلى
- 10-03-2007, 03:10 AM #96
رد: اكسبرت جديد ونتائج طيبه DIN KUSKUS
- 10-03-2007, 03:17 AM #97
رد: اكسبرت جديد ونتائج طيبه DIN KUSKUS
شكرا لك يامبدع ولكن اتوقع ان اخونا FX5 حل المشكله
لديه سؤال بسيط اين ابحث فالاعدادت التي ذكرت
(trade asian market
هنا؟:؟؟؟
//+------------------------------------------------------------------+
//| Collaboration: Dolly + Isakas + Nina System (DIN) |
//| DIN_KusKus_EA.mq4 |
//| Copyright © 2007 |
//| |
//| Written by Robert Hill aka MrPip for Forex-tsd group |
//| |
//| Version 1.0 |
//| Indicators |
//| Heiken_Ashi_Ma, Fisher_m11, BBands_Stop_v2 |
//| |
//| Includes 6 different types of trailing stops |
//| Code from IgorAD, KimIV and MrPip modified to be functions |
//| |
//| Version 1.1 |
//| Added pSAR trailing stop |
//| |
//| Version 2.0 |
//| Added check for trend on daily and 4 hr timeframe using |
//| code from GMACD and HMA3 indicator |
//| Added Hist_StepMA_Stoch_KV1_Ex_03 indicator |
//| Added Nina EMA check for entry |
//| |
//| Version 2.1 |
//| Added FlatTrend_w_MACD+ indicator |
//| |
//| Version 2.2 |
//| Added inputs for Hist_StepMA_Stoch_KV1_Ex_03 |
//| Default values 7, 0.7 |
//| |
//| Version 2.3 |
//| Added Stocastic Momentum indicator(SMI) |
//| for use as signal or trend |
//| Added selection of Entry and Exit trends |
//| |
//| Version 2.4 |
//| added Lookback check |
//| Added check for current candle direction |
//| Removed unused functions |
//| |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, Robert Hill"
#property link "http://www.forex-tsd.com/"
#include <stdlib.mqh>
#define UP 1
#define DOWN 2
// Trend indicators
#define NO_FILTER 0
#define MACD_FILTER 1
#define HMA_FILTER 2
//+---------------------------------------------------+
//|Account functions |
//+---------------------------------------------------+
extern bool AccountIsMini = true; // Change to true if trading mini account
//+---------------------------------------------------+
//|Money Management |
//+---------------------------------------------------+
extern bool MoneyManagement = true; // Change to false to shutdown money management controls.
// Lots = 1 will be in effect and only 1 lot will be open regardless of equity.
extern double TradeSizePercent = 10; // Change to whatever percent of equity you wish to risk.
extern double Lots = 0.1; // standard lot size.
extern double MaxLots = 100;
//+---------------------------------------------------+
//|Indicator Variables |
//| Change these to try your own system |
//| or add more if you like |
//+---------------------------------------------------+
extern string Expert_Name = "---- DIN_KusKus_EA_v2.4 ----";
extern string sw="--Switches--";
extern string sw1=" 0 = OFF, 1 = ON";
// Kuskus Indicators
extern int useHeikenAshi = 1;
extern int useBBStop = 1;
extern int useFish = 1;
extern int useCurrentCandle = 1;
extern int useDamianiFilter = 1;
// DIN Indicators
extern int useTrendEntry = 0;
extern int useNinaEMA = 1;
extern int useStepMA = 1;
extern int useHeikenAshiExit = 0;
extern int useBBStopExit = 0;
extern int useFishExit = 1;
extern int useTrendExit = 1;
extern int useStepMAExit = 0;
extern string bb="--BBandsStop settings--";
extern int Length=20; // Bollinger Bands Period
extern int Deviation=2; // Deviation
extern double MoneyRisk=1.00; // Offset Factor
extern string fi="--Fisher settings--";
extern int RangePeriods=35;
extern double PriceSmoothing=0.3; // =0.67 bei Fisher_m10
extern double IndexSmoothing=0.3; // =0.50 bei Fisher_m10
extern string ha="--Heiken_Ashi_Ma settings--";
extern int MaMethod = 1;
extern int MaPeriod = 15;
extern string s5="--Damiani Filter settings--";
extern int Viscosity=13;
extern int Sedimentation=50;
extern double Threshold_level=1.3;
extern bool lag_supressor=true;
extern string stm="--StepMA_Stoch settings--";
extern int PeriodWATR=7;
extern double Kwatr=0.7000;
extern string em="--EMA setting for entry--";
extern int EntryMA_Period = 50;
extern string scc="--CurrentCandle settings--";
extern int Breakout = 2;
extern string st1="--Signal_TimeFrame--";
extern string st2=" 30 or 60 minute";
extern int Signal_TimeFrame = 30;
extern string dstr0 = "--Trend Method--";
extern string dstr1 = " 0 = None";
extern string dstr2 = " 1 = MACD";
extern string dstr3 = " 2 = HMA";
extern int T4_EntryMethod = 2;
extern int T1_EntryMethod = 2;
extern int T4_ExitMethod = 2;
extern int T1_ExitMethod = 2;
extern string ss="--HMA settings--";
extern int T4_Period=12;
extern double T4_Threshold=20;
extern int T4_PrevShift=3;
extern int T4_CurShift=1;
extern int T1_Period=12;
extern double T1_Threshold=10;
extern int T1_PrevShift=3;
extern int T1_CurShift=1;
extern int HMA_method = 0;
extern int HMA_price = 0;
extern string sD="--GMACD settings--";
extern int FastEMA = 8;
extern int SlowEMA = 17;
extern int SignalSMA = 9;
extern int GMACD_SignalCandle = 0;
extern int T4_TimeFrame = 240;
extern int T1_TimeFrame = 1440;
extern string sm="--Trading Hours--";
extern bool UseTradingHours = true;
extern int brokerTimeZone = -5; //should be between -12 and +12
extern bool TradeAsianMarket = true;
extern int GMT_StartHour1 = 0; // Start trades after time
extern int GMT_StopHour1 = 3; // Stop trading after time
extern bool TradeEuropeanMarket = true;
extern int GMT_StartHour2 = 9; // Start trades after time
extern int GMT_StopHour2 = 11; // Stop trading after time
extern bool TradeNewYorkMarket = false;
extern int GMT_StartHour3 = 15; // Start trades after time
extern int GMT_StopHour3 = 17; // Stop trading after time
//+---------------------------------------------------+
//|Profit controls |
//+---------------------------------------------------+
extern string st6 = "--Profit Controls--";
extern double StopLoss = 100; // Maximum pips willing to lose per position.
extern double Margincutoff = 500; // Expert will stop trading if equity level decreases to that level.
extern int TakeProfit = 50; // Maximum profit level achieved.
extern int Slippage = 10; // Possible fix for not getting filled or closed
extern string tsp0 = "--Trailing Stop Types--";
extern string tsp1 = " 1 = Trail immediately";
extern string tsp2 = " 2 = Wait to trail";
extern string tsp3 = " 3 = Uses 3 levels before trail";
extern string tsp4 = " 4 = Breakeven + Lockin";
extern string tsp5 = " 5 = Step trail";
extern string tsp6 = " 6 = EMA trail";
extern string tsp7 = " 7 = pSAR trail";
extern bool UseTrailingStop = false;
extern int TrailingStopType = 4;
extern string ts2 = "Settings for Type 2";
extern double TrailingStop = 15; // Change to whatever number of pips you wish to trail your position with.
extern string ts3 = "Settings for Type 3";
extern double FirstMove = 20; // Type 3 first level pip gain
extern double FirstStopLoss = 50; // Move Stop to Breakeven
extern double SecondMove = 30; // Type 3 second level pip gain
extern double SecondStopLoss = 30; // Move stop to lock is profit
extern double ThirdMove = 40; // type 3 third level pip gain
extern double TrailingStop3 = 20; // Move stop and trail from there
extern string ts4 = "Settings for Type 4";
extern double BreakEven = 30;
extern int LockInPips = 1; // Profit Lock in pips
extern string ts5 = "Settings for Type 5";
extern int eTrailingStop = 10;
extern int eTrailingStep = 2;
extern string ts6 = "Settings for Type 6";
extern int EMATimeFrame = 30;
extern int Price = 0;
extern int EMAPeriod = 13;
extern int EMAShift = 2;
extern int InitialStop = 0;
extern string ts7 = "Settings for Type 7";
extern double StepParabolic = 0.02;
extern double MaxParabolic = 0.2;
extern int Interval = 5;
//+---------------------------------------------------+
//|General controls |
//+---------------------------------------------------+
string setup;
double lotMM;
int TradesInThisSymbol;
int MagicNumber;
bool YesStop;
//+---------------------------------------------------+
//| Indicator values for signals and filters |
//| Add or Change to test your system |
//+---------------------------------------------------+
// variables used for trend
double macd_H4, macd_HH4;
double macd_D1, macd_DD1;
double MACurrent, MAPrevious;
int SignalCandle = 1;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
MagicNumber = 3000 + func_Symbol2Val(Symbol())*100 + func_TimeFrame_Const2Val(Period());
setup=Expert_Name + Symbol() + "_" + func_TimeFrame_Val2String(func_TimeFrame_Const2Val (Period()));
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
//| The functions from this point to the start function are where |
//| changes are made to test other systems or strategies. |
//|+-----------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Custom Indicators |
//+------------------------------------------------------------------+
bool CheckHeikenAshi(int cmd)
{
double haOpen, haClose;
double haOpenPrev, haClosePrev;
haOpen = iCustom(NULL, Signal_TimeFrame, "Heiken_Ashi_Ma",MaMethod,MaPeriod,2,SignalCandle) ;
haClose = iCustom(NULL, Signal_TimeFrame, "Heiken_Ashi_Ma",MaMethod,MaPeriod,3,SignalCandle) ;
switch (cmd)
{
case OP_BUY : if (haOpen < haClose)
{
return (true);
}
break;
case OP_SELL : if (haOpen > haClose)
{
return (true);
}
}
return(false);
}
bool CheckFish(int cmd)
{
double Fish, FishPrev;
Fish = iCustom(NULL, Signal_TimeFrame, "Fisher_m11",RangePeriods,PriceSmoothing, IndexSmoothing,0,SignalCandle);
switch (cmd)
{
case OP_BUY : if (Fish > 0)
{
return (true);
}
break;
case OP_SELL : if (Fish < 0)
{
return (true);
}
}
return(false);
}
bool CheckBBStop(int cmd)
{
double BBStopUp, BBStopDown;
double BBStopUpPrev, BBStopDownPrev;
BBStopUp = iCustom(NULL, Signal_TimeFrame, "BBands_Stop_v2", Length, Deviation, MoneyRisk, 0, SignalCandle);
BBStopDown = iCustom(NULL, Signal_TimeFrame, "BBands_Stop_v2", Length, Deviation, MoneyRisk, 1, SignalCandle);
switch (cmd)
{
case OP_BUY : if (BBStopUp > 0 )
{
return (true);
}
break;
case OP_SELL : if (BBStopDown > 0)
{
return (true);
}
}
return(false);
}
bool CheckDamianiFilter()
{
double DamianiGreen, DamianiGray;
DamianiGray = iCustom(NULL, Signal_TimeFrame, "Damiani_volatmeter", Viscosity, Sedimentation, Threshold_level,lag_supressor, 0, SignalCandle);
DamianiGreen = iCustom(NULL, Signal_TimeFrame, "Damiani_volatmeter", Viscosity, Sedimentation, Threshold_level,lag_supressor, 2, SignalCandle);
if (DamianiGreen > DamianiGray)
{
return (true);
}
return(false);
}
bool CheckNinaEMA(int cmd)
{
double ma;
ma=iMA(NULL,Signal_TimeFrame,EntryMA_Period,0,MODE _EMA,PRICE_CLOSE,SignalCandle);
switch (cmd)
{
case OP_BUY : if (Close[1] > ma) return(true);
break;
case OP_SELL : if (Close[1] < ma) return(true);
}
return(false);
}
bool CheckStepMA(int cmd)
{
double LineMin, LineMid;
LineMin = iCustom(NULL, Signal_TimeFrame, "Hist_StepMA_Stoch_KV1_Ex_03",PeriodWATR,Kwatr,0,S ignalCandle);
LineMid = iCustom(NULL, Signal_TimeFrame, "Hist_StepMA_Stoch_KV1_Ex_03",PeriodWATR,Kwatr,1,S ignalCandle);
switch (cmd)
{
case OP_BUY : if (LineMid > 0) return(true);
break;
case OP_SELL : if (LineMin < 0) return(true);
}
return(false);
}
bool CheckCurrentCandle(int cmd)
{
double myBid;
myBid = MarketInfo(Symbol(), MODE_BID);
switch (cmd)
{
case OP_BUY :
if (myBid - iClose(Symbol(), Signal_TimeFrame ,1) >= Breakout*Point) return(true);
break;
case OP_SELL : if (iClose(Symbol(), Signal_TimeFrame ,1) - myBid >= Breakout*Point) return(true);
}
return(false);
}
//================================================== =================
// EMA_Angle.mq4
// jpkfox
//
// You can use this indicator to measure when the EMA angle is
// "near zero". AngleTreshold determines when the angle for the
// EMA is "about zero": This is when the value is between
// [-AngleTreshold, AngleTreshold] (or when the histogram is red).
// EMAPeriod: EMA period
// AngleTreshold: The angle value is "about zero" when it is
// between the values [-AngleTreshold, AngleTreshold].
// StartEMAShift: The starting point to calculate the
// angle. This is a shift value to the left from the
// observation point. Should be StartEMAShift > EndEMAShift.
// StartEMAShift: The ending point to calculate the
// angle. This is a shift value to the left from the
// observation point. Should be StartEMAShift > EndEMAShift.
//
// Return 1 for up OK
// Return -1 for down OK
// Return 0 for too flat
//================================================== =================
double MA_Angle( int PrevShift, int CurShift, double fPrevMA, double fCurMA)
{
double fAngle, mFactor;
string Sym;
int ShiftDif;
mFactor = 100000.0;
Sym = StringSubstr(Symbol(),3,3);
if (Sym == "JPY") mFactor = 1000.0;
ShiftDif = PrevShift-CurShift;
mFactor /= ShiftDif;
fAngle = mFactor * (fCurMA - fPrevMA)/2.0;
return(fAngle);
}
void GetHMA(int TimeFrame, int MAPeriod, int Prev, int Cur)
{
MACurrent=iCustom(NULL,TimeFrame,"HMA3",MAPeriod,H MA_method,HMA_price,0,Cur);
MAPrevious=iCustom(NULL,TimeFrame,"HMA3",MAPeriod, HMA_method,HMA_price,0,Prev);
}
void GetMA_Trend (int myTimeFrame, int myPeriod, int PrevShift, int CurShift)
{
GetHMA(myTimeFrame, myPeriod, PrevShift, CurShift);
}
void GetMACD_H4()
{
macd_H4=iMACD(NULL,T4_TimeFrame,FastEMA,SlowEMA,Si gnalSMA,PRICE_CLOSE,MODE_MAIN,GMACD_SignalCandle);
macd_HH4=iMACD(NULL,T4_TimeFrame,FastEMA,SlowEMA,S ignalSMA,PRICE_CLOSE,MODE_SIGNAL,GMACD_SignalCandl e);
}
void GetMACD_D1()
{
macd_D1=iMACD(NULL,T1_TimeFrame,FastEMA,SlowEMA,Si gnalSMA,PRICE_CLOSE,MODE_MAIN,GMACD_SignalCandle);
macd_DD1=iMACD(NULL,T1_TimeFrame,FastEMA,SlowEMA,S ignalSMA,PRICE_CLOSE,MODE_SIGNAL,GMACD_SignalCandl e);
}
int Get_Daily_Trend(int cmd, int T1_Method)
{
bool TrendUP, TrendDOWN;
double maAngle;
TrendUP = false;
TrendDOWN = false;
switch(T1_Method)
{
case NO_FILTER :
TrendUP = true;
TrendDOWN = true;
break;
case MACD_FILTER :
GetMACD_D1();
if (macd_D1 > macd_DD1) TrendUP = true;
if (macd_D1 < macd_DD1) TrendDOWN = true;
break;
case HMA_FILTER :
GetMA_Trend( T1_TimeFrame, T1_Period, T1_PrevShift, T1_CurShift );
maAngle = MA_Angle(T1_PrevShift, T1_CurShift, MAPrevious, MACurrent);
switch (cmd)
{
case OP_BUY : if (maAngle > T1_Threshold) TrendUP = true;
break;
case OP_SELL : if (maAngle < -T1_Threshold) TrendDOWN = true;
}
break;
}
switch (cmd)
{
case OP_BUY : if (TrendUP) return(UP); else return(DOWN);
break;
case OP_SELL : if (TrendDOWN) return(DOWN); else return (UP);
}
}
int Get_4Hr_Trend (int cmd, int T4_Method)
{
bool TrendUP, TrendDOWN;
double maAngle;
TrendUP = false;
TrendDOWN = false;
switch(T4_Method)
{
case NO_FILTER :
TrendUP = true;
TrendDOWN = true;
break;
case MACD_FILTER :
GetMACD_H4();
if (macd_H4 > macd_HH4) TrendUP = true;
if (macd_H4 < macd_HH4) TrendDOWN = true;
break;
case HMA_FILTER :
GetMA_Trend(T4_TimeFrame, T4_Period , T4_PrevShift, T4_CurShift);
maAngle = MA_Angle(T4_PrevShift, T4_CurShift, MAPrevious, MACurrent);
switch (cmd)
{
case OP_BUY : if (maAngle > T4_Threshold) TrendUP = true;
break;
case OP_SELL : if (maAngle < -T4_Threshold) TrendDOWN = true;
}
break;
}
switch (cmd)
{
case OP_BUY : if (TrendUP) return(UP); else return(DOWN);
break;
case OP_SELL : if (TrendDOWN) return(DOWN); else return (UP);
}
}
bool CheckEntryTrend(int cmd)
{
int trend1, trend4;
switch (cmd)
{
case OP_BUY : trend1 = Get_Daily_Trend(OP_BUY, T1_EntryMethod);
if (trend1 == UP)
{
trend4 = Get_4Hr_Trend(OP_BUY, T4_EntryMethod);
if (trend4 == UP) return(true);
}
return(false);
break;
case OP_SELL : trend1 = Get_Daily_Trend(OP_SELL, T1_EntryMethod);
if (trend1 == DOWN)
{
trend4 = Get_4Hr_Trend(OP_SELL, T4_EntryMethod);
if (trend4 == DOWN) return(true);
}
return(false);
}
return(false);
}
bool CheckExitTrend(int cmd)
{
int trend1, trend4;
switch (cmd)
{
case OP_BUY : trend1 = Get_Daily_Trend(OP_BUY, T1_ExitMethod);
if (trend1 == UP)
{
trend4 = Get_4Hr_Trend(OP_BUY, T4_ExitMethod);
if (trend4 == UP) return(true);
}
return(false);
break;
case OP_SELL : trend1 = Get_Daily_Trend(OP_SELL, T1_ExitMethod);
if (trend1 == DOWN)
{
trend4 = Get_4Hr_Trend(OP_SELL, T4_ExitMethod);
if (trend4 == DOWN) return(true);
}
return(false);
}
return(false);
}
//+------------------------------------------------------------------+
//| CheckExitCondition |
//| Uses OP_BUY as cmd to check exit sell |
//| Uses OP_SELL as cmd to check exit buy |
//+------------------------------------------------------------------+
bool CheckExitCondition(int cmd)
{
bool rule1, rule2, rule3, rule4, rule5, rule6;
rule1 = true;
rule2 = true;
rule3 = true;
rule4 = true;
rule5 = true;
rule6 = true;
// The rules are checked this way for speed
if (useHeikenAshiExit == 1) rule1 = CheckHeikenAshi(cmd);
if (rule1)
{
if (useFishExit == 1) rule2 = CheckFish(cmd);
if (rule2)
{
if (useBBStopExit == 1) rule3 = CheckBBStop(cmd);
if (rule3)
{
if (useTrendExit == 1) rule5 = CheckExitTrend(cmd);
if (rule5)
{
if (useStepMAExit == 1) rule6 = CheckStepMA(cmd);
if (rule6) return (true);
}
}
}
}
return (false);
}
//+------------------------------------------------------------------+
//| CheckEntryCondition |
//+------------------------------------------------------------------+
bool CheckEntryCondition(int cmd)
{
bool rule1, rule2, rule3, rule4, rule5, rule6, rule7, rule8, rule9;
rule1 = true;
rule2 = true;
rule3 = true;
rule4 = true;
rule5 = true;
rule6 = true;
rule7 = true;
rule8 = true;
rule9 = true;
// The rules are checked this way for speed
if (useHeikenAshi == 1) rule1 = CheckHeikenAshi(cmd);
if (rule1)
{
if (useFish == 1) rule3 = CheckFish(cmd);
if (rule3)
{
if (useCurrentCandle == 1) rule6 = CheckCurrentCandle(cmd);
if (rule6)
{
if (useNinaEMA == 1) rule7 = CheckNinaEMA(cmd);
if (rule7)
{
if (useBBStop == 1) rule2 = CheckBBStop(cmd);
if (rule2)
{
if (useTrendEntry == 1) rule8 = CheckEntryTrend(cmd);
if (rule8)
{
if (useStepMA == 1) rule9 = CheckStepMA(cmd);
if (rule9)
{
if (useDamianiFilter == 1) rule5 = CheckDamianiFilter();
if (rule5) return(true);
}
}
}
}
}
}
}
return (false);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
//+------------------------------------------------------------------+
//| Check for Open Position |
//+------------------------------------------------------------------+
HandleOpenPositions();
// Check if any open positions were not closed
TradesInThisSymbol = CheckOpenPositions();
//+------------------------------------------------------------------+
//| Check if OK to make new trades |
//+------------------------------------------------------------------+
if(AccountFreeMargin() < Margincutoff) {
return(0);}
if(!TradeTime())
return(0);
/*
if (UseTradingHours)
{
YesStop = true;
// Check trading Asian Market
if (TradeAsianMarket)
{
if (StartHour1 > 18)
{
// Check broker that uses Asian open before 0:00
if (Hour() >= StartHour1) YesStop = false;
if (!YesStop)
{
if (StopHour1 < 24)
{
if ( Hour() <= StopHour1) YesStop = false;
}
// These cannot be combined even though the code looks the same
if (StopHour1 >=0)
{
if ( Hour() <= StopHour1) YesStop = false;
}
}
}
else
{
if (Hour() >= StartHour1 && Hour() <= StopHour1) YesStop = false;
}
}
if (YesStop)
{
// Check trading European Market
if (TradeEuropeanMarket)
{
if (Hour() >= StartHour2 && Hour() <= StopHour2) YesStop = false;
}
}
if (YesStop)
{
// Check trading European Market
if (TradeNewYorkMarket)
{
if (Hour() >= StartHour3 && Hour() <= StopHour3) YesStop = false;
}
}
if (YesStop)
{
// Comment ("Trading has been stopped as requested - wrong time of day");
return (0);
}
}
*/
// Only allow 1 trade per Symbol
if(TradesInThisSymbol > 0) {
return(0);}
lotMM = GetLots();
if(CheckEntryCondition(OP_BUY))
{
OpenBuyOrder();
return(0);
}
if(CheckEntryCondition(OP_SELL))
{
OpenSellOrder();
}
//----
return(0);
}
//+------------------------------------------------------------------+
//| Functions beyond this point should not need to be modified |
//| Eventually will be placed in include file |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| OpenBuyOrder |
//| If Stop Loss or TakeProfit are used the values are calculated |
//| for each trade |
//+------------------------------------------------------------------+
void OpenBuyOrder()
{
int err,ticket, digits;
double myPrice, myStopLoss = 0, myTakeProfit = 0;
myPrice = MarketInfo(Symbol(), MODE_ASK);
myStopLoss = 0;
if ( StopLoss > 0 ) myStopLoss = myPrice - StopLoss * Point ;
myTakeProfit = 0;
if (TakeProfit>0) myTakeProfit = myPrice + TakeProfit * Point;
// Normalize all price / stoploss / takeprofit to the proper # of digits.
digits = MarketInfo(Symbol( ), MODE_DIGITS) ;
if (digits > 0)
{
myPrice = NormalizeDouble( myPrice, digits);
myStopLoss = NormalizeDouble( myStopLoss, digits);
myTakeProfit = NormalizeDouble( myTakeProfit, digits);
}
ticket=OrderSend(Symbol(),OP_BUY,lotMM,myPrice,Sli ppage,myStopLoss,myTakeProfit,setup,MagicNumber,0, Green);
if (ticket > 0)
{
if (OrderSelect( ticket,SELECT_BY_TICKET, MODE_TRADES) )
{
Print("BUY order opened : ", OrderOpenPrice( ));
// ModifyOrder(ticket,OrderOpenPrice( ), OrderStopLoss(), myTakeProfit);
}
}
else
{
err = GetLastError();
Print("Error opening BUY order [" + setup + "]: (" + err + ") " + ErrorDescription(err));
}
}
//+------------------------------------------------------------------+
//| OpenSellOrder |
//| If Stop Loss or TakeProfit are used the values are calculated |
//| for each trade |
//+------------------------------------------------------------------+
void OpenSellOrder()
{
int err, ticket, digits;
double myPrice, myStopLoss = 0, myTakeProfit = 0;
myPrice = MarketInfo(Symbol( ), MODE_BID);
myStopLoss = 0;
if ( StopLoss > 0 ) myStopLoss = myPrice + StopLoss * Point;
myTakeProfit = 0;
if (TakeProfit > 0) myTakeProfit = myPrice - TakeProfit * Point;
// Normalize all price / stoploss / takeprofit to the proper # of digits.
digits = MarketInfo(Symbol( ), MODE_DIGITS) ;
if (digits > 0)
{
myPrice = NormalizeDouble( myPrice, digits);
myStopLoss = NormalizeDouble( myStopLoss, digits);
myTakeProfit = NormalizeDouble( myTakeProfit, digits);
}
ticket=OrderSend(Symbol(),OP_SELL,lotMM,myPrice,Sl ippage,myStopLoss,myTakeProfit,setup,MagicNumber,0 ,Red);
if (ticket > 0)
{
if (OrderSelect( ticket,SELECT_BY_TICKET, MODE_TRADES) )
{
Print("Sell order opened : ", OrderOpenPrice());
// ModifyOrder(ticket,OrderOpenPrice( ), OrderStopLoss(), myTakeProfit);
}
}
else
{
err = GetLastError();
Print("Error opening Sell order [" + setup + "]: (" + err + ") " + ErrorDescription(err));
}
}
//+------------------------------------------------------------------+
//| Check Open Position Controls |
//+------------------------------------------------------------------+
int CheckOpenPositions()
{
int cnt, total, NumPositions;
int NumBuyTrades, NumSellTrades; // Number of buy and sell trades in this symbol
NumBuyTrades = 0;
NumSellTrades = 0;
total=OrdersTotal();
for(cnt=OrdersTotal()-1;cnt>=0;cnt--)
{
OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES);
if ( OrderSymbol() != Symbol()) continue;
if ( OrderMagicNumber() != MagicNumber) continue;
if(OrderType() == OP_BUY ) NumBuyTrades++;
if(OrderType() == OP_SELL ) NumSellTrades++;
}
NumPositions = NumBuyTrades + NumSellTrades;
return (NumPositions);
}
int CloseOrder(int ticket,double numLots,int cmd)
{
int CloseCnt, err, digits;
double myPrice;
if (cmd == OP_BUY) myPrice = MarketInfo(Symbol( ), MODE_BID);
if (cmd == OP_SELL) myPrice = MarketInfo(Symbol( ), MODE_ASK);
digits = MarketInfo(Symbol( ), MODE_DIGITS) ;
if (digits > 0) myPrice = NormalizeDouble( myPrice, digits);
// try to close 3 Times
CloseCnt = 0;
while (CloseCnt < 3)
{
if (!OrderClose(ticket,numLots,myPrice,Slippage,Viole t))
{
err=GetLastError();
Print(CloseCnt," Error closing order : (", err , ") " + ErrorDescription(err));
if (err > 0) CloseCnt++;
}
else
{
CloseCnt = 3;
}
}
}
int ModifyOrder(int ord_ticket,double op, double price,double tp, color mColor)
{
int CloseCnt, err;
CloseCnt=0;
while (CloseCnt < 3)
{
if (OrderModify(ord_ticket,op,price,tp,0,mColor))
{
CloseCnt = 3;
}
else
{
err=GetLastError();
Print(CloseCnt," Error modifying order : (", err , ") " + ErrorDescription(err));
if (err>0) CloseCnt++;
}
}
}
double ValidStopLoss(int type, double price, double SL)
{
double minstop, pp;
pp = MarketInfo(Symbol(), MODE_POINT);
minstop = MarketInfo(Symbol(),MODE_STOPLEVEL);
if (type == OP_BUY)
{
if((price - SL) < minstop*pp) SL = price - minstop*pp;
}
if (type == OP_SELL)
{
if((SL-price) < minstop*pp) SL = price + minstop*pp;
}
return(SL);
}
//+------------------------------------------------------------------+
//| BreakEvenExpert_v1.mq4 |
//| Copyright © 2006, Forex-TSD.com |
//| Written by IgorAD,[email protected] |
//| http://finance.groups.yahoo.com/group/TrendLaboratory |
//+------------------------------------------------------------------+
void BreakEven_TrailingStop(int type, int ticket, double op, double os, double tp)
{
int digits;
double pBid, pAsk, pp, BuyStop, SellStop;
pp = MarketInfo(Symbol(), MODE_POINT);
digits = MarketInfo(Symbol(), MODE_DIGITS);
if (type==OP_BUY)
{
pBid = MarketInfo(Symbol(), MODE_BID);
if ( pBid-op > pp*BreakEven )
{
BuyStop = op + LockInPips * pp;
if (digits > 0) BuyStop = NormalizeDouble( BuyStop, digits);
BuyStop = ValidStopLoss(OP_BUY,pBid, BuyStop);
if (digits > 0) BuyStop = NormalizeDouble( BuyStop, digits);
if (os < BuyStop) ModifyOrder(ticket,op,BuyStop,tp,LightGreen);
return;
}
}
if (type==OP_SELL)
{
pAsk = MarketInfo(Symbol(), MODE_ASK);
if ( op - pAsk > pp*BreakEven )
{
SellStop = op - LockInPips * pp;
if (digits > 0) SellStop = NormalizeDouble( SellStop, digits);
SellStop = ValidStopLoss(OP_SELL, pAsk, SellStop);
if (digits > 0) SellStop = NormalizeDouble( SellStop, digits);
if (os > SellStop) ModifyOrder(ticket,op,SellStop,tp,DarkOrange);
return;
}
}
}
//+------------------------------------------------------------------+
//| e-Trailing.mq4 |
//| تèى بمîًü آ. aka KimIV |
//| http://www.kimiv.ru |
//| |
//| 12.09.2005 ہâٍîىàٍè÷هٌêèé Trailing Stop âٌهُ îٍêًûٍûُ ïîçèِèé |
//| آهّàٍü ٍîëüêî يà îنèي مًàôèê |
//+------------------------------------------------------------------+
void eTrailingStop(int type, int ticket, double op, double os, double tp)
{
int digits;
double pBid, pAsk, pp, BuyStop, SellStop;
pp = MarketInfo(Symbol(), MODE_POINT);
digits = MarketInfo(Symbol(), MODE_DIGITS) ;
if (type==OP_BUY)
{
pBid = MarketInfo(Symbol(), MODE_BID);
if ((pBid-op)>eTrailingStop*pp)
{
if (os<pBid-(eTrailingStop+eTrailingStep-1)*pp)
{
BuyStop = pBid-eTrailingStop*pp;
if (digits > 0) BuyStop = NormalizeDouble( BuyStop, digits);
BuyStop = ValidStopLoss(OP_BUY, pBid, BuyStop);
if (digits > 0) BuyStop = NormalizeDouble( BuyStop, digits);
ModifyOrder(ticket,op,BuyStop,tp,LightGreen);
return;
}
}
}
if (type==OP_SELL)
{
pAsk = MarketInfo(Symbol(), MODE_ASK);
if (op - pAsk > eTrailingStop*pp)
{
if (os > pAsk + (eTrailingStop + eTrailingStep-1)*pp || os==0)
{
SellStop = pAsk + eTrailingStop * pp;
if (digits > 0) SellStop = NormalizeDouble( SellStop, digits);
SellStop = ValidStopLoss(OP_SELL, pAsk, SellStop);
if (digits > 0) SellStop = NormalizeDouble( SellStop, digits);
ModifyOrder(ticket,op,SellStop,tp,DarkOrange);
return;
}
}
}
}
//+------------------------------------------------------------------+
//| EMATrailingStop_v1.mq4 |
//| Copyright © 2006, Forex-TSD.com |
//| Written by IgorAD,[email protected] |
//| http://finance.groups.yahoo.com/group/TrendLaboratory |
//+------------------------------------------------------------------+
void EMA_TrailingStop(int type, int ticket, double op, double os, double tp)
{
int digits;
double pBid, pAsk, pp, BuyStop, SellStop, ema;
pp = MarketInfo(Symbol(), MODE_POINT);
digits = MarketInfo(Symbol(), MODE_DIGITS) ;
ema = iMA(Symbol(),EMATimeFrame,EMAPeriod,0,MODE_EMA,Pri ce,EMAShift);
if (type==OP_BUY)
{
BuyStop = ema;
pBid = MarketInfo(Symbol(),MODE_BID);
if(os == 0 && InitialStop>0 ) BuyStop = pBid-InitialStop*pp;
if (digits > 0) BuyStop = NormalizeDouble(SellStop, digits);
BuyStop = ValidStopLoss(OP_BUY, pBid, BuyStop);
if (digits > 0) BuyStop = NormalizeDouble(BuyStop, digits);
Print("MA=",ema," BuyStop=",BuyStop);
if ((op <= BuyStop && BuyStop > os) || os==0)
{
ModifyOrder(ticket,op,BuyStop,tp,LightGreen);
return;
}
}
if (type==OP_SELL)
{
SellStop = ema;
pAsk = MarketInfo(Symbol(),MODE_ASK);
if (os==0 && InitialStop > 0) SellStop = pAsk+InitialStop*pp;
if (digits > 0) SellStop = NormalizeDouble(SellStop, digits);
SellStop = ValidStopLoss(OP_SELL, pAsk, SellStop);
if (digits > 0) SellStop = NormalizeDouble(SellStop, digits);
Print("MA=",ema," SellStop=",SellStop);
if( (op >= SellStop && os > SellStop) || os==0)
{
ModifyOrder(ticket,op,SellStop,tp,DarkOrange);
return;
}
}
}
//+------------------------------------------------------------------+
//| b-TrailingSAR.mqh |
//| تèى بمîًü آ. aka KimIV |
//| http://www.kimiv.ru |
//| |
//| 21.11.2005 ءèلëèîٍهêà ôَيêِèé ًٍàëà ïî ïàًàلîëèêَ. |
//| ؤëے èٌïîëüçîâàيèے نîلàâèٍü ًٌٍîêَ â ىîنَëه start |
//| if (UseTrailing) TrailingPositions(); |
//+------------------------------------------------------------------+
void pSAR_TrailingStop(int type, int ticket, double op, double os, double tp)
{
int digits;
double pBid, pAsk, pp, BuyStop, SellStop, spr;
double sar1, sar2;
pp = MarketInfo(Symbol(), MODE_POINT);
digits = MarketInfo(Symbol(), MODE_DIGITS) ;
pBid = MarketInfo(Symbol(), MODE_BID);
pAsk = MarketInfo(Symbol(), MODE_ASK);
sar1=iSAR(NULL, 0, StepParabolic, MaxParabolic, 1);
sar2=iSAR(NULL, 0, StepParabolic, MaxParabolic, 2);
spr = pAsk - pBid;
if (digits > 0) spr = NormalizeDouble(spr, digits);
if (type==OP_BUY)
{
pBid = MarketInfo(Symbol(), MODE_BID);
if (sar2 < sar1)
{
BuyStop = sar1-Interval*pp;
if (digits > 0) BuyStop = NormalizeDouble(BuyStop, digits);
BuyStop = ValidStopLoss(OP_BUY, pBid, BuyStop);
if (digits > 0) BuyStop = NormalizeDouble(BuyStop, digits);
if (os<BuyStop) ModifyOrder(ticket,op,BuyStop,tp,LightGreen);
}
}
if (type==OP_SELL)
{
if (sar2 > sar1)
{
SellStop = sar1 + Interval * pp + spr;
if (digits > 0) SellStop = NormalizeDouble(SellStop, digits);
SellStop = ValidStopLoss(OP_SELL, pAsk, SellStop);
if (digits > 0) SellStop = NormalizeDouble(SellStop, digits);
if (os>SellStop || os==0) ModifyOrder(ticket,op,SellStop,tp,DarkOrange);
}
}
}
//+------------------------------------------------------------------+
//| ThreeLevel_TrailingStop.mq4 |
//| Copyright © 2006, Forex-TSD.com |
//| Written by MrPip,[email protected] |
//| |
//| Uses up to 3 levels for trailing stop |
//| Level 1 Move stop to 1st level |
//| Level 2 Move stop to 2nd level |
//| Level 3 Trail like type 1 by fixed amount other than 1 |
//+------------------------------------------------------------------+
void ThreeLevel_TrailingStop(int type, int ticket, double op, double os, double tp)
{
int digits;
double pBid, pAsk, pp, BuyStop, SellStop;
pp = MarketInfo(Symbol(), MODE_POINT);
digits = MarketInfo(Symbol(), MODE_DIGITS) ;
if (type == OP_BUY)
{
pBid = MarketInfo(Symbol(), MODE_BID);
if (pBid - op > FirstMove * pp)
{
BuyStop = op + FirstMove*pp - FirstStopLoss * pp;
if (digits > 0) BuyStop = NormalizeDouble(BuyStop, digits);
BuyStop = ValidStopLoss(OP_BUY, pBid, BuyStop);
if (digits > 0) BuyStop = NormalizeDouble(BuyStop, digits);
if (os < BuyStop) ModifyOrder(ticket,op,BuyStop,tp,LightGreen);
}
if (pBid - op > SecondMove * pp)
{
BuyStop = op + SecondMove*pp - SecondStopLoss * pp;
if (digits > 0) BuyStop = NormalizeDouble(BuyStop, digits);
BuyStop = ValidStopLoss(OP_BUY, pBid, BuyStop);
if (digits > 0) BuyStop = NormalizeDouble(BuyStop, digits);
if (os < BuyStop) ModifyOrder(ticket,op,BuyStop,tp,LightGreen);
}
if (pBid - op > ThirdMove * pp)
{
BuyStop = pBid - ThirdMove*pp;
if (digits > 0) BuyStop = NormalizeDouble(BuyStop, digits);
BuyStop = ValidStopLoss(OP_BUY, pBid, BuyStop);
if (digits > 0) BuyStop = NormalizeDouble(BuyStop, digits);
if (os < BuyStop) ModifyOrder(ticket,op,BuyStop,tp,LightGreen);
}
}
if (type == OP_SELL)
{
pAsk = MarketInfo(Symbol(), MODE_ASK);
if (op - pAsk > FirstMove * pp)
{
SellStop = op - FirstMove * pp + FirstStopLoss * pp;
if (digits > 0) SellStop = NormalizeDouble(SellStop, digits);
SellStop = ValidStopLoss(OP_SELL, pAsk, SellStop);
if (digits > 0) SellStop = NormalizeDouble(SellStop, digits);
if (os > SellStop) ModifyOrder(ticket,op,SellStop,tp,DarkOrange);
}
if (op - pAsk > SecondMove * pp)
{
SellStop = op - SecondMove * pp + SecondStopLoss * pp;
if (digits > 0) SellStop = NormalizeDouble(SellStop, digits);
SellStop = ValidStopLoss(OP_SELL, pAsk, SellStop);
if (digits > 0) SellStop = NormalizeDouble(SellStop, digits);
if (os > SellStop) ModifyOrder(ticket,op,SellStop,tp,DarkOrange);
}
if (op - pAsk > ThirdMove * pp)
{
SellStop = pAsk + ThirdMove * pp;
if (digits > 0) SellStop = NormalizeDouble(SellStop, digits);
SellStop = ValidStopLoss(OP_SELL, pAsk, SellStop);
if (digits > 0) SellStop = NormalizeDouble(SellStop, digits);
if (os > SellStop) ModifyOrder(ticket,op,SellStop,tp,DarkOrange);
}
}
}
//+------------------------------------------------------------------+
//| Immediate_TrailingStop.mq4 |
//| Copyright © 2006, Forex-TSD.com |
//| Written by MrPip,[email protected] |
//| |
//| Moves the stoploss without delay. |
//+------------------------------------------------------------------+
void Immediate_TrailingStop(int type, int ticket, double op, double os, double tp)
{
int digits;
double pt, pBid, pAsk, pp, BuyStop, SellStop;
pp = MarketInfo(Symbol(), MODE_POINT);
digits = MarketInfo(Symbol( ), MODE_DIGITS);
if (type==OP_BUY)
{
pBid = MarketInfo(Symbol(), MODE_BID);
pt = StopLoss * pp;
if(pBid-os > pt)
{
BuyStop = pBid - pt;
if (digits > 0) BuyStop = NormalizeDouble( BuyStop, digits);
BuyStop = ValidStopLoss(OP_BUY,pBid, BuyStop);
if (digits > 0) BuyStop = NormalizeDouble( BuyStop, digits);
if (os < BuyStop) ModifyOrder(ticket,op,BuyStop,tp,LightGreen);
return;
}
}
if (type==OP_SELL)
{
pAsk = MarketInfo(Symbol(), MODE_ASK);
pt = StopLoss * pp;
if(os - pAsk > pt)
{
SellStop = pAsk + pt;
if (digits > 0) SellStop = NormalizeDouble( SellStop, digits);
SellStop = ValidStopLoss(OP_SELL, pAsk, SellStop);
if (digits > 0) SellStop = NormalizeDouble( SellStop, digits);
if (os > SellStop) ModifyOrder(ticket,op,SellStop,tp,DarkOrange);
return;
}
}
}
//+------------------------------------------------------------------+
//| Delayed_TrailingStop.mq4 |
//| Copyright © 2006, Forex-TSD.com |
//| Written by MrPip,[email protected] |
//| |
//| Waits for price to move the amount of the TrailingStop |
//| Moves the stoploss pip for pip after delay. |
//+------------------------------------------------------------------+
void Delayed_TrailingStop(int type, int ticket, double op, double os, double tp)
{
int digits;
double pt, pBid, pAsk, pp, BuyStop, SellStop;
pp = MarketInfo(Symbol(), MODE_POINT);
pt = TrailingStop * pp;
digits = MarketInfo(Symbol(), MODE_DIGITS);
if (type==OP_BUY)
{
pBid = MarketInfo(Symbol(), MODE_BID);
BuyStop = pBid - pt;
if (digits > 0) BuyStop = NormalizeDouble( BuyStop, digits);
BuyStop = ValidStopLoss(OP_BUY,pBid, BuyStop);
if (digits > 0) BuyStop = NormalizeDouble( BuyStop, digits);
if (pBid-op > pt && os < BuyStop) ModifyOrder(ticket,op,BuyStop,tp,LightGreen);
return;
}
if (type==OP_SELL)
{
pAsk = MarketInfo(Symbol(), MODE_ASK);
pt = TrailingStop * pp;
SellStop = pAsk + pt;
if (digits > 0) SellStop = NormalizeDouble( SellStop, digits);
SellStop = ValidStopLoss(OP_SELL, pAsk, SellStop);
if (digits > 0) SellStop = NormalizeDouble( SellStop, digits);
if (op - pAsk > pt && os > SellStop) ModifyOrder(ticket,op,SellStop,tp,DarkOrange);
return;
}
}
//+------------------------------------------------------------------+
//| HandleTrailingStop |
//| Type 1 moves the stoploss without delay. |
//| Type 2 waits for price to move the amount of the trailStop |
//| before moving stop loss then moves like type 1 |
//| Type 3 uses up to 3 levels for trailing stop |
//| Level 1 Move stop to 1st level |
//| Level 2 Move stop to 2nd level |
//| Level 3 Trail like type 1 by fixed amount other than 1 |
//| Type 4 Move stop to breakeven + Lockin, no trail |
//| Type 5 uses steps for 1, every step pip move moves stop 1 pip |
//| Type 6 Uses EMA to set trailing stop |
//+------------------------------------------------------------------+
int HandleTrailingStop(int type, int ticket, double op, double os, double tp)
{
switch (TrailingStopType)
{
case 1 : Immediate_TrailingStop (type, ticket, op, os, tp);
break;
case 2 : Delayed_TrailingStop (type, ticket, op, os, tp);
break;
case 3 : ThreeLevel_TrailingStop (type, ticket, op, os, tp);
break;
case 4 : BreakEven_TrailingStop (type, ticket, op, os, tp);
break;
case 5 : eTrailingStop (type, ticket, op, os, tp);
break;
case 6 : EMA_TrailingStop (type, ticket, op, os, tp);
break;
case 7 : pSAR_TrailingStop (type, ticket, op, os, tp);
break;
}
return(0);
}
//+------------------------------------------------------------------+
//| Handle Open Positions |
//| Check if any open positions need to be closed or modified |
//+------------------------------------------------------------------+
int HandleOpenPositions()
{
int cnt;
for(cnt=OrdersTotal()-1;cnt>=0;cnt--)
{
OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES);
if ( OrderSymbol() != Symbol()) continue;
if ( OrderMagicNumber() != MagicNumber) continue;
if(OrderType() == OP_BUY)
{
if (CheckExitCondition(OP_SELL))
{
CloseOrder(OrderTicket(),OrderLots(),OP_BUY);
}
else
{
if (UseTrailingStop)
{
HandleTrailingStop(OP_BUY,OrderTicket(),OrderOpenP rice(),OrderStopLoss(),OrderTakeProfit());
}
}
}
if(OrderType() == OP_SELL)
{
if (CheckExitCondition(OP_BUY))
{
CloseOrder(OrderTicket(),OrderLots(),OP_SELL);
}
else
{
if (UseTrailingStop)
{
HandleTrailingStop(OP_SELL,OrderTicket(),OrderOpen Price(),OrderStopLoss(),OrderTakeProfit());
}
}
}
}
}
//+------------------------------------------------------------------+
//| Get number of lots for this trade |
//+------------------------------------------------------------------+
double GetLots()
{
double lot;
if(MoneyManagement)
{
lot = LotsOptimized();
}
else
{
lot = Lots;
}
if(AccountIsMini)
{
if (lot < 0.1) lot = 0.1;
}
else
{
if (lot >= 1.0) lot = MathFloor(lot); else lot = 1.0;
}
if (lot > MaxLots) lot = MaxLots;
return(lot);
}
//+------------------------------------------------------------------+
//| Calculate optimal lot size |
//+------------------------------------------------------------------+
double LotsOptimized()
{
double lot=Lots;
//---- select lot size
lot=NormalizeDouble(MathFloor(AccountFreeMargin()* TradeSizePercent/10000)/10,1);
// lot at this point is number of standard lots
// if (Debug) Print ("Lots in LotsOptimized : ",lot);
// Check if mini or standard Account
if(AccountIsMini)
{
lot = MathFloor(lot*10)/10;
}
return(lot);
}
//+------------------------------------------------------------------+
//| Time frame interval appropriation function |
//+------------------------------------------------------------------+
int func_TimeFrame_Const2Val(int Constant ) {
switch(Constant) {
case 1: // M1
return(1);
case 5: // M5
return(2);
case 15:
return(3);
case 30:
return(4);
case 60:
return(5);
case 240:
return(6);
case 1440:
return(7);
case 10080:
return(8);
case 43200:
return(9);
}
}
//+------------------------------------------------------------------+
//| Time frame string appropriation function |
//+------------------------------------------------------------------+
string func_TimeFrame_Val2String(int Value ) {
switch(Value) {
case 1: // M1
return("PERIOD_M1");
case 2: // M1
return("PERIOD_M5");
case 3:
return("PERIOD_M15");
case 4:
return("PERIOD_M30");
case 5:
return("PERIOD_H1");
case 6:
return("PERIOD_H4");
case 7:
return("PERIOD_D1");
case 8:
return("PERIOD_W1");
case 9:
return("PERIOD_MN1");
default:
return("undefined " + Value);
}
}
int func_Symbol2Val(string symbol)
{
string mySymbol = StringSubstr(symbol,0,6);
if(mySymbol=="AUDCAD") return(1);
if(mySymbol=="AUDJPY") return(2);
if(mySymbol=="AUDNZD") return(3);
if(mySymbol=="AUDUSD") return(4);
if(mySymbol=="CHFJPY") return(5);
if(mySymbol=="EURAUD") return(6);
if(mySymbol=="EURCAD") return(7);
if(mySymbol=="EURCHF") return(8);
if(mySymbol=="EURGBP") return(9);
if(mySymbol=="EURJPY") return(10);
if(mySymbol=="EURUSD") return(11);
if(mySymbol=="GBPCHF") return(12);
if(mySymbol=="GBPJPY") return(13);
if(mySymbol=="GBPUSD") return(14);
if(mySymbol=="NZDUSD") return(15);
if(mySymbol=="USDCAD") return(16);
if(mySymbol=="USDCHF") return(17);
if(mySymbol=="USDJPY") return(18);
Comment("unexpected Symbol");
return(19);
}
//+----------------------------------------------------------------+
//| FX5 Time Management Code |
//| [email protected] |
//+----------------------------------------------------------------+
bool TradeTime()
{
if (!UseTradingHours)
return(true);
if (TradeAsianMarket)
{
if (BetweenStartAndStop(GMT_StartHour1, GMT_StopHour1))
return(true);
}
if (TradeEuropeanMarket)
{
if (BetweenStartAndStop(GMT_StartHour2, GMT_StopHour2))
return(true);
}
if (TradeNewYorkMarket)
{
if (BetweenStartAndStop(GMT_StartHour3, GMT_StopHour3))
return(true);
}
return(false);
}
//+----------------------------------------------------------------+
bool BetweenStartAndStop(int startHour, int stopHour)
{
int GMT_Hour = Hour() - brokerTimeZone;
if (GMT_Hour < 0)
GMT_Hour += 24;
if (GMT_Hour >= 24)
GMT_Hour -= 24;
if (startHour < stopHour)
{
if (GMT_Hour >= startHour && GMT_Hour < stopHour)
return(true);
else
return(false);
}
else if (startHour > stopHour)
{
if (GMT_Hour >= startHour || GMT_Hour < stopHour)
return(true);
else
return(false);
}
else
return(false);
}
//+----------------------------------------------------------------+
// End of Time Management Code |
//+----------------------------------------------------------------+
- 10-03-2007, 03:28 AM #98
رد: اكسبرت جديد ونتائج طيبه DIN KUSKUS
الله يجزاك خير ويرحم والديك يابو ليلى
فعلا نتائج مبهره من شخص كريم
النتائج رائعه واكثر من رائعه خلال فتره وجيزه جدا 4 ايام
الا مع eurgbp
و usdcad
والباقي نتائجه مذهله
وفقك الله لما يحب ويرضى والا الامام
ولك دعوه في ظهر الغيب
وسوف احاول ان اشغله مع بداية الاسبوع واجرب معك باذن الله
والسلام عليكم ورحمة الله وبركاته
اخوكم فالله
- 10-03-2007, 04:11 AM #99
رد: اكسبرت جديد ونتائج طيبه DIN KUSKUS
السلام عليكم ورحمة الله
الاخ ابو فيصل المحترم
للتسهيل الان شغله على الfxdd
الملف المرفق فكه ونسخه بي
mt4/config/*.srv
وحيكون عندك معظم الشركات الي بتتعامل مع الميتاتريدر اختار منهم الfxdd
هناك بعض الشركات وحسب ما سمعت تمنع بض الاكسبرتات او الاندكيترز من العمل بالنسبه الي انا لم ارى هذه الشي ولست مقتنع بيه لكن للتسهيل الان جرب حساب مع fxdd وان شاء الله ازا اسمترت النتائج جيده خلال الفتره القادمه بنحل مشكله البروكر تايم
انا للعلم اخدت الملف الي عمله الاخ fx5 وحطيته بالموقع وطلبت من روبرت انه ايضا يلقى نظره عليه مش تشكيك بجدارة الاخ fx5 ولكن ازا تم اعتماده علشان انحطه بدل الاكسبرت الاصلي
انا بحاول احصر اي الازواج افضل وغالبا انا شبه متاكد انه الازواج الاكتر حركه هي الافضل اما الازواج الاخري فيجبب ان نققلل من صرامة الشروط لعمل التريد والخروج منها وذلك ببساطه بعمل قيمتهم صفر او واحد من السيتنج
الان احاول ان احصر افضل الازواج لعمل اتريد وبعهدا ان شاء الله اغير بالسيتج واجرب افضل سيتنج لكل زوج
والله ولي التوفيق
ملاحظه للاخ سمير : موقع رائع ومتميز لكن يفتح ببطا شديد واحيانا لا يفتح معي الموقع ان كان ظني بمحله فان ذلك يرجع للهوستنج كمبانيآخر تعديل بواسطة minime ، 10-03-2007 الساعة 04:15 AM
- 10-03-2007, 04:28 AM #100
رد: اكسبرت جديد ونتائج طيبه DIN KUSKUS
اشكر صاحب الاكسبيرت على حبة ومنفعة اخوانة المسلمين
لدي سؤال
اذا كان هذا الاكسبيرت ممتااز كيف اخلي البرنامج شغال 24 ساعة او كيف اضع الميتاتريدر في موقع بحيث استطيع من اي مكان ان افتحه وان اراقبة
تحيااتي لكم جميعاااااااااااااااااااااا
- 10-03-2007, 04:30 AM #101
رد: اكسبرت جديد ونتائج طيبه DIN KUSKUS
من هذه القائمه اعدل وقت البروكر
ونظرا لاني اتعامل مع انتربانك طرحت ساعتين من الوقت الموجود بالاكسبرت حيث ان الديفولت للاكسبرت هوا توقيت الاف اكس دي دي والانتربانك يفرق عن الاف اكس دي دي ساعتين
لكن ايضا احب ان اكرر للاخوان سواء تم استخدام هذا الاكسبيرت او غيره ان ينظروا الى ملف الفيديوا الذي ارفقه الاخ سمير لمعرفة اهمية رسم الترند لاين الشهري والاسبوعي
لانه كثير من المرات يصل التاجر الا نقطة ترند شهري قويه لايمكن كسرها بسوله وتتراجع العمله ففي هذه الحاله عند تنصيب اي اكسبيرت ونحن باذن الله نعرف اتجاه العمله ننصب الاكسبيرت بحيث يقوم فقط بعمليه بيع ولا يقوم باي عملية شراء او العكس
خطوط الترند الشهريه باي حال من الاحوال يجب ان تظل دوما على الشارت ويجب ان تحترمآخر تعديل بواسطة minime ، 10-03-2007 الساعة 04:35 AM
- 10-03-2007, 05:28 AM #102
رد: اكسبرت جديد ونتائج طيبه DIN KUSKUS
موضوع مفيد للقراءه
http://www.forex-tsd.com/expert-advi...l-trading.html
بعض النصائح المهمه وبعض وجهات النظرآخر تعديل بواسطة minime ، 10-03-2007 الساعة 05:56 AM
- 10-03-2007, 09:52 AM #103
رد: اكسبرت جديد ونتائج طيبه DIN KUSKUS
اخي اياد كل ما تحتاجه كمبيوتر موصول على النترنت 24 ساعه وتشغل الميتاتريدر وتنزل الكسبرت عليه وتشغله
لكن يا اخوان انا شايف اشويت تسرع ارجورا ان لا يجرب احد لان الاكسبرت على حساب حقيقي لحين الانتهاء والتاكد من النتائج
انا عندي ثقه بالاكسبرت لاني كنت واحد من المسؤولين عن تطويره لكن يا اخوان انا اشكر لكم هذه الثقه الغاليه لكن يجب ان لا تثقوا بكلامي او كلام اي شخص بخصوص الفوركس يجب ان تجرب بنفسك وتتاكد من انه يشتغل 100% ويدر الربح عليك ثم تبدا بحساب صيغير وتجربه لمده ثم تنتقل لحساب اكبر انشاء الله
ويجب يا اخوان من يريد ان يستخدم الاكسبرت ان يكون على درايه بخلفية هذا الاكسبرت ومن اين نشا وهل النظام الي نشاء منه نظام ناجح او فاشل
لذلك قمت عدة مرات بوضع الموقع الاصلي للاكسبرت حتى يطلع الاخوان
الاكسبرت هوا ناشئ من نظام اسمه ISAKAS KUKUS
http://www.forex-tsd.com/manual-trad..._osentogg.html
اول بوست في هذه الموقع تشمل على النظام القديم ثم تم تطوير هذا النظام على مراحل ولكن كان في مشاكل وهي الاشارات الخاطئه عندما يكون السوق في ركود او الاشارات المتاخره
اما الموقع الذي نشا فيه الاكسبرت فهو
http://www.forex-tsd.com/dolly/5640-...na-system.html
وارجو يا اخوان الاطلاع والقراة قبل اتخاذ اي قرار ارجوا والصبر --- نحن هنا بصدد تجارة اموال وهذه الامور يجب ان تاخذ بتروي
مره اخرى اشكر لكم الثقه الغاليه لكن يا اخواني هناك الكثير ممن يدعون بسوق الفوركس الفهم ويدرسون الفوركس وهم تجار فاشلين فما ادراكم اني لست احدهم
لذلك يجب ان تعمل اختبار الاكسبرت بنفسك وتجربه على حساب ديموا لمده لاتقل عن شهر قبل التسرع باستثمار اموالك
ونصيحه للاخوان الجدد على هذه السوق اي لا يستثمروا بحساب ستاندرد بل يجب ان يبدؤوا بحساب ميني وان يضع لنفسه خطه حتى لو كانت باستخدام الاكسبرت وان تكون الخطا مدروسه وناجه وتدر دخل ثابت ولو قليل قبل الانتقال لحساب الستاندر
لانه اسرع مكان لخسارة الاموال هيا الفوركس والكثير يظنون انهم سيصبحون اثرياء بين يوم وليله وهذا افتراض خاطئ
هناك عدة شروط يجب ان تراعى قبل الاتجار بالفوركس ومن الخبره وبمجرد النظر للفترات فوق الساعه يمكن ان تتنبا وبدقه كبيره اين يتجه السعر وهذه الامور تاتي بالصبر والخبره والقراءه وانا اكره ان يخسر اخواني ليتعلموا فاسمعوا النصيحه يا جزاكم الله خيرا واقرءوا عن الفوركس بقدر الاستطاعه حتى تشعرون عند النظر للشارت كانك تقرا من كتاب
وفقني الله واياكم وانا والله متلي متلكم ارجوا ان يكون الاكسبرت الذي طورناه عند حسن الظن ---ولكن احيانا تاتي الرياح بما لاتشتهي السفن
- 10-03-2007, 04:10 PM #104
- 10-03-2007, 04:17 PM #105
المواضيع المتشابهه
-
مطلوب اكسبرت لمؤشر جديد و قوي جدا
By manawi in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 6آخر مشاركة: 05-01-2010, 11:30 PM -
اكسبرت جديد FX Profit Mountain
By Myopning in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 2آخر مشاركة: 05-12-2009, 03:05 PM -
اكسبرت جديد مضاف إلى مجموعتي الخاصة Tripple K
By Dr.Aoudi in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 132آخر مشاركة: 14-10-2009, 05:39 PM -
اكسبرت جديد
By termanatore in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 5آخر مشاركة: 12-04-2008, 03:51 PM -
اكسبرت جديد ونتائج طيبه DIN KUSKUS
By minime in forum سوق تداول العملات الأجنبية والسلع والنفط والمعادنمشاركات: 124آخر مشاركة: 12-03-2007, 03:50 PM