اف اكس ارابيا..الموقع الرائد فى تعليم فوركس Forex

اف اكس ارابيا..الموقع الرائد فى تعليم فوركس Forex (https://fx-arabia.com/vb/index.php)
-   منتدى المؤشرات و الاكسبيرتات (https://fx-arabia.com/vb/forumdisplay.php?f=6)
-   -   دورة تعليم برمجة الاكسبريت (https://fx-arabia.com/vb/showthread.php?t=29378)

MOVING_AVERAGE 16-04-2013 03:11 PM

رد: دورة تعليم برمجة الاكسبريت
 
لكي ترتاح من مشكلة 5 ارقام

غير اي كتابة ملونة للكلمة Point

وجعلها فقط point ب حرف p الصغير وليس حرف P الكبير

بعدما تضع التالي في دالة init

[PHP]
if(Digits==5||Digits==3)Q=10;
else Q=1;
if(Digits==2)
{
point=0.01;

}
if(Digits==4)
{
point=0.0001;

}
if(Digits==3)
{
point=0.01;

}
if(Digits==5)
{
point=0.0001;

}
[/PHP]جرب ضع التعديلات بنفسك

وان لم تشتغل معك ساعدل لك في الاكسبريت

ayoob 16-04-2013 04:41 PM

رد: دورة تعليم برمجة الاكسبريت
 
1 مرفق
اقتباس:

المشاركة الأصلية كتبت بواسطة MOVING_AVERAGE (المشاركة 497208)
لكي ترتاح من مشكلة 5 ارقام

غير اي كتابة ملونة للكلمة Point

وجعلها فقط point ب حرف p الصغير وليس حرف P الكبير

بعدما تضع التالي في دالة init

[PHP]
if(Digits==5||Digits==3)Q=10;
else Q=1;
if(Digits==2)
{
point=0.01;

}
if(Digits==4)
{
point=0.0001;

}
if(Digits==3)
{
point=0.01;

}
if(Digits==5)
{
point=0.0001;

}
[/PHP]جرب ضع التعديلات بنفسك

وان لم تشتغل معك ساعدل لك في الاكسبريت

السلام عليكم اخي مصطفي ان لسة مبتدأ في البرمجة ولكن وضعت التعديل الدي قلت علية وفتح صفقة علي الباك تست بدون هدف ولا استوب
[PHP]extern int StopLoss=100;
extern int TakeProfit=10;
extern double Lot=0.10;
extern int Magic=14000;
int point,digits;
int Q;

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
if(Digits==5||Digits==3)Q=10;
else Q=1;
if(Digits==2)
{
point=0.01;

}
if(Digits==4)
{
point=0.0001;

}
if(Digits==3)
{
point=0.01;

}
if(Digits==5)
{
point=0.0001;
}
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
double STOK1,STOK2;
STOK1=iStochastic(Symbol(),PERIOD_M1,5,3,3,0,0,MOD E_MAIN,3);
STOK2=iStochastic(Symbol(),PERIOD_M1,5,3,3,0,0,MOD E_MAIN,3);
if(STOK1<15&&OrdersTotal()==0)
{
OrderSend(Symbol(),OP_BUY,Lot,Ask,Q*3,Ask*point,As k*point,"AYOOB",Magic,0,Green);
}
if(STOK2>85&&OrdersTotal()==0)

{
OrderSend(Symbol(),OP_SELL,Lot,Bid,Q*3,Bid*point,B id*point,"AYOOB",Magic,0,Red);
}[/PHP]http://www.fx-arabia.com/vb/uploaded...1366119577.png

و بي النسبة لي الاكسبيرات الدي في المرفقات ليس ان الدي برمجتة فقط كنت اريد التعديل علية ليشتغل علي كل المنصات والتاكد انة يفتح الصفقات عادي مرفق الاكسبيرات

MOVING_AVERAGE 16-04-2013 05:06 PM

رد: دورة تعليم برمجة الاكسبريت
 
تفضل تعديل فتح الصفقات

[PHP]
//+------------------------------------------------------------------+
//| Stok_scalper_EA.mq4 |
//| Copyright 2013, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"


extern int MagicNumber=1011;
extern double lStopLoss = 100;
extern double sStopLoss = 100;
extern double lTakeProfit = 10;
extern double sTakeProfit = 10;


extern string jj="------";
extern int StopLoss=100;
extern int TakeProfit=10;


extern color clOpenBuy = Blue;
extern color clCloseBuy = Aqua;
extern color clOpenSell = Red;
extern color clCloseSell = Violet;
extern color clModiBuy = Blue;
extern color clModiSell = Red;
extern string Name_Expert = "Stok_scalper EA";
extern int Slippage = 0;
extern bool UseHourTrade = True;
extern int FromHourTrade = 0;
extern int ToHourTrade = 23;
extern bool UseSound = True;
extern string NameFileSound = "alert.wav";
extern double Lots = 2;
int digits,Q;
double point;


int init()
{


if(Digits==5||Digits==3)Q=10;
else Q=1;
if(Digits==2)
{
point=0.01;
digits=2;
}
if(Digits==4)
{
point=0.0001;
digits=4;
}
if(Digits==3)
{
point=0.01;
digits=3;
}
if(Digits==5)
{
point=0.0001;
digits=5;
}
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
int start()
{

if (UseHourTrade){
if (!(Hour()>=FromHourTrade && Hour()<=ToHourTrade)) {
Comment("Time for trade has not come else!");
return(0);
} else Comment("");
}else Comment("");
if(Bars<100){
Print("bars less than 100");
return(0);
}
if(lStopLoss<10){
Print("StopLoss less than 10");
return(0);
}
if(lTakeProfit<10){
Print("TakeProfit less than 10");
return(0);
}
if(sStopLoss<10){
Print("StopLoss less than 10");
return(0);
}
if(sTakeProfit<10){
Print("TakeProfit less than 10");
return(0);
}



double diStochastic0=iStochastic(NULL,60,5,3,3,MODE_EMA,P RICE_CLOSE,MODE_MAIN,3);
double d1=(15);
double diStochastic2=iStochastic(NULL,60,5,3,3,MODE_EMA,P RICE_CLOSE,MODE_MAIN,3);
double d3=(85);

if(AccountFreeMargin()<(1000*Lots)){
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
if (!ExistPositions()){

if ((diStochastic0<d1)){
open(OP_BUY,Lots,Ask,TakeProfit,StopLoss) ;
return(0);
}

if ((diStochastic2>d3)){
open(OP_SELL,Lots,Bid,TakeProfit,StopLoss) ;
return(0);
}
}
return (0);
}

bool ExistPositions() {
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) {
return(True);
}
}
}
return(false);
}

/*
void ModifyStopLoss(double ldStopLoss) {
bool fm;
fm = OrderModify(OrderTicket(),OrderOpenPrice(),ldStopL oss,OrderTakeProfit(),0,CLR_NONE);
if (fm && UseSound) PlaySound(NameFileSound);
}
*/

void OpenBuy() {
double ldLot, ldStop, ldTake;
string lsComm;
ldLot = GetSizeLot();
ldStop = GetStopLossBuy();
ldTake = GetTakeProfitBuy();
lsComm = GetCommentForOrder();
OrderSend(Symbol(),OP_BUY,ldLot,Ask,Slippage,ldSto p,ldTake,lsComm,MagicNumber,0,clOpenBuy);
if (UseSound) PlaySound(NameFileSound);
}
void OpenSell() {
double ldLot, ldStop, ldTake;
string lsComm;

ldLot = GetSizeLot();
ldStop = GetStopLossSell();
ldTake = GetTakeProfitSell();
lsComm = GetCommentForOrder();
OrderSend(Symbol(),OP_SELL,ldLot,Bid,Slippage,ldSt op,ldTake,lsComm,MagicNumber,0,clOpenSell);
if (UseSound) PlaySound(NameFileSound);
}
string GetCommentForOrder() { return(Name_Expert); }
double GetSizeLot() { return(Lots); }
double GetStopLossBuy() { return (Bid-lStopLoss*Point);}
double GetStopLossSell() { return(Ask+sStopLoss*Point); }
double GetTakeProfitBuy() { return(Ask+lTakeProfit*Point); }
double GetTakeProfitSell() { return(Bid-sTakeProfit*Point); }

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



int open(int ty,double lot,double prc,int pof,int sll)
{
double sl=0,tp=0;
color clr;
bool modi;
string T;double pr;
if(ty==OP_BUY || ty==OP_BUYSTOP || ty==OP_BUYLIMIT)
{
if(sll>0){sl=prc-(sll*point);}else{sl=0;}
if(pof>0){tp=prc+(pof*point);}else{tp=0;}
clr=Green;
T="Ask ";
pr=NormalizeDouble(Ask,Digits);
}
if(ty==OP_SELL || ty==OP_SELLSTOP || ty==OP_SELLLIMIT)
{
if(sll>0){sl=prc+(sll*point);}else{sl=0;}
if(pof>0){tp=prc-(pof*point);}else{tp=0;}
clr=Red;
T="Bid";
pr=NormalizeDouble(Bid,Digits);
}
int tik=OrderSend(Symbol()
,ty
,lot
,NormalizeDouble(prc,Digits)
,10
,0
,0
,""
,MagicNumber
,0
,clr);
string t;
if(ty==OP_BUY)t="BUY";if(ty==OP_SELL)t="SELL";if(t y==OP_BUYSTOP)t="BUY STOP";if(ty==OP_SELLSTOP)t="SELL STOP";if(ty==OP_BUYLIMIT)t="BUY LIMIT";if(ty==OP_SELLLIMIT)t="SELL LIMIT";
if(tik>0)
{
if(tp>0 || sl>0)modi=OrderModify(tik,prc,NormalizeDouble(sl,D igits),NormalizeDouble(tp,Digits),0,CLR_NONE); else modi=true;
if(!modi){Print("Modify Err#= ",GetLastError()," ",Symbol()," ",Period()," Open Price= ",DoubleToStr(prc,Digits)," SL= ",DoubleToStr(sl,Digits)," Tp= ",DoubleToStr(tp,Digits));}
Print("Order Opened successfully " ,"Type ",t," LotSize ",lot," Price ",DoubleToStr(prc,Digits)," TP ",DoubleToStr(tp,Digits)," SL ",DoubleToStr(sl,Digits));
}
else
{
Print("OrderSend failed with error #",GetLastError(), " Type ",t," LotSize= ",lot," ",T,"Now= ",DoubleToStr(pr,Digits)," Price= ",DoubleToStr(prc,Digits)," TP= ",DoubleToStr(tp,Digits)," SL= ",DoubleToStr(sl,Digits)," Spread= ",MarketInfo(Symbol(),MODE_SPREAD));
}
//////
return(tik);

}
[/PHP]

م. عبدالرحمن وردة 16-04-2013 06:49 PM

رد: دورة تعليم برمجة الاكسبريت
 
اقتباس:

المشاركة الأصلية كتبت بواسطة MOVING_AVERAGE (المشاركة 497094)
يتم ذلك بواسطة مراجعة الصفقات الحالية والصفقات التي اغلقة

مثلا يمكن معرفة اخر صفقة اغلقة اما رابحة او خاسرة بعدة طرق

من بين هته الطرق مراجعة ربح الصفقة ان كان سالب

يعني ان الصفقة خسرت

حضرتك انا سؤالى عن الامر او المتغير الذي يقول لى حاله الصفقة الحالية او الصفقات الماضية.

MOVING_AVERAGE 17-04-2013 10:56 PM

رد: دورة تعليم برمجة الاكسبريت
 
اقتباس:

المشاركة الأصلية كتبت بواسطة م. عبدالرحمن وردة (المشاركة 497352)
حضرتك انا سؤالى عن الامر او المتغير الذي يقول لى حاله الصفقة الحالية او الصفقات الماضية.

لم افهم بالتحديد السؤال

ayoob 18-04-2013 09:49 AM

رد: دورة تعليم برمجة الاكسبريت
 
اقتباس:

المشاركة الأصلية كتبت بواسطة MOVING_AVERAGE (المشاركة 497298)
تفضل تعديل فتح الصفقات

[PHP]
//+------------------------------------------------------------------+
//| Stok_scalper_EA.mq4 |
//| Copyright 2013, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"


extern int MagicNumber=1011;
extern double lStopLoss = 100;
extern double sStopLoss = 100;
extern double lTakeProfit = 10;
extern double sTakeProfit = 10;


extern string jj="------";
extern int StopLoss=100;
extern int TakeProfit=10;


extern color clOpenBuy = Blue;
extern color clCloseBuy = Aqua;
extern color clOpenSell = Red;
extern color clCloseSell = Violet;
extern color clModiBuy = Blue;
extern color clModiSell = Red;
extern string Name_Expert = "Stok_scalper EA";
extern int Slippage = 0;
extern bool UseHourTrade = True;
extern int FromHourTrade = 0;
extern int ToHourTrade = 23;
extern bool UseSound = True;
extern string NameFileSound = "alert.wav";
extern double Lots = 2;
int digits,Q;
double point;


int init()
{


if(Digits==5||Digits==3)Q=10;
else Q=1;
if(Digits==2)
{
point=0.01;
digits=2;
}
if(Digits==4)
{
point=0.0001;
digits=4;
}
if(Digits==3)
{
point=0.01;
digits=3;
}
if(Digits==5)
{
point=0.0001;
digits=5;
}
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
int start()
{

if (UseHourTrade){
if (!(Hour()>=FromHourTrade && Hour()<=ToHourTrade)) {
Comment("Time for trade has not come else!");
return(0);
} else Comment("");
}else Comment("");
if(Bars<100){
Print("bars less than 100");
return(0);
}
if(lStopLoss<10){
Print("StopLoss less than 10");
return(0);
}
if(lTakeProfit<10){
Print("TakeProfit less than 10");
return(0);
}
if(sStopLoss<10){
Print("StopLoss less than 10");
return(0);
}
if(sTakeProfit<10){
Print("TakeProfit less than 10");
return(0);
}



double diStochastic0=iStochastic(NULL,60,5,3,3,MODE_EMA,P RICE_CLOSE,MODE_MAIN,3);
double d1=(15);
double diStochastic2=iStochastic(NULL,60,5,3,3,MODE_EMA,P RICE_CLOSE,MODE_MAIN,3);
double d3=(85);

if(AccountFreeMargin()<(1000*Lots)){
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
if (!ExistPositions()){

if ((diStochastic0<d1)){
open(OP_BUY,Lots,Ask,TakeProfit,StopLoss) ;
return(0);
}

if ((diStochastic2>d3)){
open(OP_SELL,Lots,Bid,TakeProfit,StopLoss) ;
return(0);
}
}
return (0);
}

bool ExistPositions() {
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) {
return(True);
}
}
}
return(false);
}

/*
void ModifyStopLoss(double ldStopLoss) {
bool fm;
fm = OrderModify(OrderTicket(),OrderOpenPrice(),ldStopL oss,OrderTakeProfit(),0,CLR_NONE);
if (fm && UseSound) PlaySound(NameFileSound);
}
*/

void OpenBuy() {
double ldLot, ldStop, ldTake;
string lsComm;
ldLot = GetSizeLot();
ldStop = GetStopLossBuy();
ldTake = GetTakeProfitBuy();
lsComm = GetCommentForOrder();
OrderSend(Symbol(),OP_BUY,ldLot,Ask,Slippage,ldSto p,ldTake,lsComm,MagicNumber,0,clOpenBuy);
if (UseSound) PlaySound(NameFileSound);
}
void OpenSell() {
double ldLot, ldStop, ldTake;
string lsComm;

ldLot = GetSizeLot();
ldStop = GetStopLossSell();
ldTake = GetTakeProfitSell();
lsComm = GetCommentForOrder();
OrderSend(Symbol(),OP_SELL,ldLot,Bid,Slippage,ldSt op,ldTake,lsComm,MagicNumber,0,clOpenSell);
if (UseSound) PlaySound(NameFileSound);
}
string GetCommentForOrder() { return(Name_Expert); }
double GetSizeLot() { return(Lots); }
double GetStopLossBuy() { return (Bid-lStopLoss*Point);}
double GetStopLossSell() { return(Ask+sStopLoss*Point); }
double GetTakeProfitBuy() { return(Ask+lTakeProfit*Point); }
double GetTakeProfitSell() { return(Bid-sTakeProfit*Point); }

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



int open(int ty,double lot,double prc,int pof,int sll)
{
double sl=0,tp=0;
color clr;
bool modi;
string T;double pr;
if(ty==OP_BUY || ty==OP_BUYSTOP || ty==OP_BUYLIMIT)
{
if(sll>0){sl=prc-(sll*point);}else{sl=0;}
if(pof>0){tp=prc+(pof*point);}else{tp=0;}
clr=Green;
T="Ask ";
pr=NormalizeDouble(Ask,Digits);
}
if(ty==OP_SELL || ty==OP_SELLSTOP || ty==OP_SELLLIMIT)
{
if(sll>0){sl=prc+(sll*point);}else{sl=0;}
if(pof>0){tp=prc-(pof*point);}else{tp=0;}
clr=Red;
T="Bid";
pr=NormalizeDouble(Bid,Digits);
}
int tik=OrderSend(Symbol()
,ty
,lot
,NormalizeDouble(prc,Digits)
,10
,0
,0
,""
,MagicNumber
,0
,clr);
string t;
if(ty==OP_BUY)t="BUY";if(ty==OP_SELL)t="SELL";if(t y==OP_BUYSTOP)t="BUY STOP";if(ty==OP_SELLSTOP)t="SELL STOP";if(ty==OP_BUYLIMIT)t="BUY LIMIT";if(ty==OP_SELLLIMIT)t="SELL LIMIT";
if(tik>0)
{
if(tp>0 || sl>0)modi=OrderModify(tik,prc,NormalizeDouble(sl,D igits),NormalizeDouble(tp,Digits),0,CLR_NONE); else modi=true;
if(!modi){Print("Modify Err#= ",GetLastError()," ",Symbol()," ",Period()," Open Price= ",DoubleToStr(prc,Digits)," SL= ",DoubleToStr(sl,Digits)," Tp= ",DoubleToStr(tp,Digits));}
Print("Order Opened successfully " ,"Type ",t," LotSize ",lot," Price ",DoubleToStr(prc,Digits)," TP ",DoubleToStr(tp,Digits)," SL ",DoubleToStr(sl,Digits));
}
else
{
Print("OrderSend failed with error #",GetLastError(), " Type ",t," LotSize= ",lot," ",T,"Now= ",DoubleToStr(pr,Digits)," Price= ",DoubleToStr(prc,Digits)," TP= ",DoubleToStr(tp,Digits)," SL= ",DoubleToStr(sl,Digits)," Spread= ",MarketInfo(Symbol(),MODE_SPREAD));
}
//////
return(tik);

}
[/PHP]

تمام اخي مصطفي اضفت الكود واشتغل عادي وبي النسبة لي هد الكود ليس لة فائدة الان صحيح وقمت بي ازلة كلمة extren
[PHP]double lStopLoss = 1000;
double sStopLoss = 1000;
double lTakeProfit = 100;
double sTakeProfit = 100;[/PHP]

ziyadiah 18-04-2013 10:00 AM

رد: دورة تعليم برمجة الاكسبريت
 
يعطيك الف عافية اخي موفنج

م. عبدالرحمن وردة 18-04-2013 01:11 PM

رد: دورة تعليم برمجة الاكسبريت
 
اقتباس:

المشاركة الأصلية كتبت بواسطة MOVING_AVERAGE (المشاركة 498181)
لم افهم بالتحديد السؤال

ما هو الكود او البرنامج الذي يحقق الشروط التالية:-
اظهار حاله الصفقة الماضية في commment
إيقاف البرنامج في حالة أن الرصيد أصبح أقل من 50 دولار.
إيقاف البرنامج في حالة خسارة عشر صفقات.

*********************

MOVING_AVERAGE 18-04-2013 01:17 PM

رد: دورة تعليم برمجة الاكسبريت
 
اقتباس:

المشاركة الأصلية كتبت بواسطة م. عبدالرحمن وردة (المشاركة 498462)
ما هو الكود او البرنامج الذي يحقق الشروط التالية:-
اظهار حاله الصفة الماضية في commment
إيقاف البرنامج في حالة أن الرصيد أصبح أقل من 50 دولار.
إيقاف البرنامج في حالة خسارة عشر صفقات.

*********************


حالة الصفقة يعني لو كان يعني اضهار ربح الصفقة الماضية

سنستخدم الدالة التالية خارج الدالة ستارت

[PHP]
double pofet_HISTORY(){
double pr=0;
for(int p=0;p<OrdersHistoryTotal();p++){
OrderSelect(p,SELECT_BY_POS,MODE_HISTORY);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
pr=OrderProfit();
}
return(pr);
}
[/PHP]

سنكتب داخل الدالة ستارت الامر

[PHP]
Comment(pofet_HISTORY());
[/PHP]

يضهر لنا هل ربح او خسارة الصفقة الماضية

كيف اعرف ربح او خسارة

اذا مانت النتيجة موجبة فهو ربح ان كانت سالبة فهو خسارة

MOVING_AVERAGE 18-04-2013 01:20 PM

رد: دورة تعليم برمجة الاكسبريت
 
اقتباس:

المشاركة الأصلية كتبت بواسطة م. عبدالرحمن وردة (المشاركة 498462)
ما هو الكود او البرنامج الذي يحقق الشروط التالية:-
اظهار حاله الصفقة الماضية في commment
إيقاف البرنامج في حالة أن الرصيد أصبح أقل من 50 دولار.
إيقاف البرنامج في حالة خسارة عشر صفقات.

*********************

ايقاف البرنامج

اولا لكي نحصل علي الرصيد نستخدم التالي

[PHP]
AccountBalance()
[/PHP]

لكي نتحكم في عمل الاكسبريت اعتماد علي الرصيد

نضع من شروط فتح الصفقات

[PHP]
if(AccountBalance()>50)
[/PHP]


الساعة الآن 06:30 PM

Powered by vBulletin® Copyright ©2000 - 2025

جميع الحقوق محفوظة الى اف اكس ارابيا www.fx-arabia.com