النتائج 1 إلى 8 من 8
- 25-10-2019, 02:52 AM #1
ياريت يا شباب حد يساعدنى بهذا الاكسبيرت
السلام عليكم جميعا
السادة مبرمجى المنتدى الاعزاء
لى طلب بسيط
وهو اكسبيرت يقوم بـ:
يعرض قرائات مؤشر ATR للازواج المفتوح عليها صفقات ويجمعهم
وعندما يظهر مجموع نقاط الصفقات المفتوحة الى نفس المجموع على الاكسبيرت
يقوم بإغلاق كل الصفقات المفتوحة
مثال للتوضيح:
لدى 3 صفقات مفتوحة على اليورو و الباوند والكندى , فيقوم الاكسبيرت بعرض قرائات مؤشر ATR الخاص بهم
Pair ATR
EURUSD 55
GBPUSD 34
USD CAD 63
TOTAL 152
وبالتالى عندما تصل كل الصفقات المفتوحة الى ربح 152 نقطة يقوم الاكسبيرت باغلاقهم جميعا
والف شكر لكم مقدما
- 25-10-2019, 02:20 PM #2
تفضل .........
كود PHP://+------------------------------------------------------------------+
//| Close_With_ATR.mq4 |
//| Copyright 2019, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
extern int ATR_Period=14;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
if(Get_Orders_Profits()>=Get_Orders_ATR())Close_Trades();
}
//+------------------------------------------------------------------+
double Get_Orders_Profits(){
double Profits=0,Lots=0;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if(OrderType()<2)
Profits+=OrderProfit();
Lots+=OrderLots();
}
return((Profits/Lots)/10);
}
//+------------------------------------------------------------------+
double Get_Orders_ATR(){
double ATR_Total=0;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if(OrderType()<2)
ATR_Total+=iATR(OrderSymbol(),0,ATR_Period,0);
}
return(ATR_Total);
}
//+-------------------------------------------------------------------+
void Close_Trades(){
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if(OrderType()==OP_BUY)
{
if(!OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),3,clrGreen))printf("Failure To Close The Order",GetLastError());
}
else if(OrderType()==OP_SELL)
if(!OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),3,clrRed))printf("Failure To Close The Order",GetLastError());
}
}
//+-------------------------------------------------------------------+
- 25-10-2019, 05:42 PM #3
عذرا كان فيه خطأ وتم التصحيح ............
كود PHP://+------------------------------------------------------------------+
//| Close_With_ATR.mq4 |
//| Copyright 2019, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
extern int ATR_Period=14;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
if(Get_Orders_Profits()>=Get_Orders_ATR())Close_Trades();
}
//+------------------------------------------------------------------+
double Get_Orders_Profits(){
double Profits=0,Lots=0;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if(OrderType()<2)
Profits+=OrderProfit();
Lots+=OrderLots();
}
return((Profits/Lots)/10);
}
//+------------------------------------------------------------------+
double Get_Orders_ATR(){
double ATR_Total=0;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if(OrderType()<2)
ATR_Total+=(iATR(OrderSymbol(),0,ATR_Period,0)/Pips(OrderSymbol()));
}
return(ATR_Total);
}
//+-------------------------------------------------------------------+
void Close_Trades(){
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if(OrderType()==OP_BUY){
if(!OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),3,clrGreen))printf("Failure To Close The Order",GetLastError());}
else if(OrderType()==OP_SELL)
if(!OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),3,clrRed))printf("Failure To Close The Order",GetLastError());
}
}
//+-------------------------------------------------------------------+
double Pips(string SYMBOL){
double pips=0;
double ticksize=MarketInfo(SYMBOL,MODE_TICKSIZE);
if(ticksize==0.00001 || ticksize==0.001)
pips=ticksize*10;
else pips=ticksize;
return(pips);
}
//+-------------------------------------------------------------------+
- 26-10-2019, 03:54 AM #4
شكرا جدا لك اخى
- 26-10-2019, 01:48 PM #5
االعفو يا الغالي
- 31-10-2019, 06:07 PM #6
'New MQL4 Source File.mq4' New MQL4 Source File.mq4 1 1
'كود' - unexpected token, probably type is missing? New MQL4 Source File.mq4 2 1
'PHP' - semicolon expected New MQL4 Source File.mq4 2 5
'ATR_Period' - undeclared identifier New MQL4 Source File.mq4 58 51
3 error(s), 0 warning(s) 4 1
- 31-10-2019, 06:56 PM #7
- 01-11-2019, 02:41 AM #8
اخى الكريم تم وضعه على الشارت لكنه لا يعرض القراءة الحالية للـATR للعملات المفتوحة