النتائج 4,156 إلى 4,170 من 10335
الموضوع: موضوع مخصص للأسئلة البرمجية
- 15-07-2013, 04:53 PM #4156
رد:موضوع مخصص للأسئلة البرمجية
للأسف لم تنجح الدالة المعدلة بالباكتيست فقط خدعت حيث الكائن trendline الذي يتكون بعد الاغلاق عكست ألوانها فقط
ويتم الاغلاق كما كان سابقا وكأنه لا يوجد مقارنة عدد النقاط بالشراء والبيع
- 16-07-2013, 05:01 PM #4157
موضوع مميز بارك الله فيك
- 17-07-2013, 12:13 AM #4158
رد:موضوع مخصص للأسئلة البرمجية
السلام عليكم اخي ماستر دولار
استأجرت سيرفر بالموصفات التالية
- 1 GB RAM
- 2 CPU Core 3.6 GHz
- 60 GB RAID Storage
- 10 TB Premium Traffic
وسطبت عليه الميتاتريدر
وقمن بتشغيل الاكسبيرت على عدة ازواج
لكن الاكسبيرت لا يشتغل على بعض الازواج لسبب غير مفهوم بالنسبة لي
مع العلم انه يقوم بعمليات مقارنة كبيرة على كل زوج في وقت افتتاح الشمعة
هل ممكن ان يكون عدد الحسابات الكبير هو سبب .؟
ام هناك احتمال اخر ؟
بارك الله فيك
- 17-07-2013, 05:18 AM #4159
رد:موضوع مخصص للأسئلة البرمجية
وعليكم السلام ورحمة الله وبركاته
يجب أن تتأكد أولا هل تظهر أي أخطاء تدل على أن الإكسبرت حاول فتح صفقة أم لا بالتالي يجب أن يظهر رقم الخطأ
أو هل الإكسبرت يتوقف تماما عن العمل ويتوقف الميتاتريدر فسوف يكون السبب كما ذكرت
إذا كان الإكسبرت يعتمد على فتح الصفقات في نفس الوقت تقريبا على جميع الأزواج فقد كتبت مشاركه سابقه تشرح هذه المشكله
https://forum.arabictrader.com/t3761...ml#post2682758
- 17-07-2013, 05:20 AM #4160
رد:موضوع مخصص للأسئلة البرمجية
خاصية الأوبتمايز أو optimization تسمح لك بدلا من أن تجرب الإعدادات يدويا للوصول إلى أفضل إعدادات فيجعل الميتاتريدر أوتوماتيكيا يبث لك عن أفضل إعدادات للإكسبرت بناء على مجال نقاط البحث التي تحددها له
راجع هذا الموضوع
https://forum.arabictrader.com/t84237.html
- 17-07-2013, 05:27 AM #4161
رد:موضوع مخصص للأسئلة البرمجية
بالنسبه لهذا الإكسبرت فهو يوجد فيه شرطين لإغلاق الصفقات
لإغلاق الشراء
كود PHP:if (CloseBuy1_1 < CloseBuy1_2) Order = SIGNAL_CLOSEBUY;
كود PHP:if (CloseSell1_1 > CloseSell1_2) Order = SIGNAL_CLOSESELL;
كود PHP:if(OrderClosePrice()-OrderOpenPrice()>=40*Point||OrderOpenPrice()-OrderClosePrice()>=39*Point)continue;
كود PHP:if (Order == SIGNAL_CLOSEBUY&&(OrderProfit()<0||OrderProfit()>=TakeProfit)&&(
(EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
if(OrderClosePrice()-OrderOpenPrice()>=40*Point||OrderOpenPrice()-OrderClosePrice()>=39*Point)continue;
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
continue;
}
- 17-07-2013, 05:31 AM #4162
رد:موضوع مخصص للأسئلة البرمجية
وعليكم السلام ورحمة الله وبركاته
نفس فكرة المضاعفات لكن بدلا من أن تضرب حجم اللوت في 2 مثلا سوف تقسمه على 2 أو تطرح من 1 و هكذا
مثال
كود PHP:double NextLot()
{
for(int i=OrdersHistoryTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
return(OrderLots());
}
}
return(0);
}
كود PHP:newlot=NextLot()/2;
- 17-07-2013, 05:44 AM #4163
- 17-07-2013, 06:17 AM #4164
السلام عليكم ورحمة الله
عند اغلاق الشمعة وافتتاح شمعة ثانية كيف تكتب تعليمة شراء اذا كانت الشمعة السابقة صاعدة او تعليمة بيع اذا كانت الشمعة السابقة هابطة
- 17-07-2013, 04:27 PM #4165
- 17-07-2013, 06:01 PM #4166
رد:موضوع مخصص للأسئلة البرمجية
نعم كانت عندي مشكلة في الـ point لكن كنت أتعامل معها بإضافة 0 بالمتغيرات الخارجية... منصة الخمس أرقام...
وتم تعديلها وعملت الباكتيست و نفس المشكلة
وهي فقط في مكان الاغلاق
لنعود إلى الصورة
عند حدوث الحركة [ab] تم تحقق الشرط
كود:ProfitPips_S+ProfitPips_B>TotalProfit
كود:(ProfitPips_S<PipLoss)&&(ProfitPips_B>PipProfit)
PipProfit هي المسافة بين المستويين شراء3 و شراء2 (أو بصفة عامة هي المسافة بين مستويين )
PipLoss هي المسافة بين شراء2 و بيع2 (أو بصفة عامة مسافة المستوى)
إذن حسب الشروط يجب أن يغلق الهيدج بهذا الترتيب إغلاق بيع2 مع شراء3 عند مستوى شراء2
لكن بالباكتيست يتم غلق هذا الهيدج عند مستوى بيع3 !!! وهذا خطأ قاتل
أرجو أن تكون المشكلة وضحت
وجزاك الله خيرا وتقبل الله الطاعات في هذا الشهر المبارك
آخر تعديل بواسطة kira-h ، 17-07-2013 الساعة 06:08 PM
- 18-07-2013, 04:16 AM #4167
رد:موضوع مخصص للأسئلة البرمجية
أخي الفضال شكرا على تعاونك معي و على إستجابتك لطلبي .
لقد قمت بتعديلات الازمة التي قلت لكن لم تفلح , هل يمكنك أن تقوم بتعديلها لي على السكربت . و شكرا لكم جميعا
وهدا تدكير بسكريبت
كود PHP://+------------------------------------------------------------------+
//| This MQL is generated by Expert Advisor Builder |
//| http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/ |
//| |
//| In no event will author be liable for any damages whatsoever. |
//| Use at your own risk. |
//| |
//+------------------- DO NOT REMOVE THIS HEADER --------------------+
#define SIGNAL_NONE 0
#define SIGNAL_BUY 1
#define SIGNAL_SELL 2
#define SIGNAL_CLOSEBUY 3
#define SIGNAL_CLOSESELL 4
#property copyright "Expert Advisor Builder"
#property link "http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/"
extern int MagicNumber = 0;
extern bool SignalMail = False;
extern bool EachTickMode = True;
extern double Lots = 1.0;
extern int Slippage = 3;
extern bool UseStopLoss = True;
extern int StopLoss = 40;
extern bool UseTakeProfit = False;
extern int TakeProfit = 60;
extern bool UseTrailingStop = False;
extern int TrailingStop = 30;
int BarCount;
int Current;
bool TickCheck = False;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init() {
BarCount = Bars;
if (EachTickMode) Current = 0; else Current = 1;
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit() {
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start() {
int Order = SIGNAL_NONE;
int Total, Ticket;
double StopLossLevel, TakeProfitLevel;
if (EachTickMode && Bars != BarCount) TickCheck = False;
Total = OrdersTotal();
Order = SIGNAL_NONE;
//+------------------------------------------------------------------+
//| Variable Begin |
//+------------------------------------------------------------------+
double Buy1_1 = iMA(NULL, 0, 5, 0, MODE_SMA, PRICE_CLOSE, Current + 1);
double Buy1_2 = iMA(NULL, 0, 5, 0, MODE_SMA, PRICE_OPEN, Current + 1);
double Buy2_1 = iMA(NULL, 0, 5, 0, MODE_SMA, PRICE_CLOSE, Current + 2);
double Buy2_2 = iMA(NULL, 0, 5, 0, MODE_SMA, PRICE_OPEN, Current + 2);
double Sell1_1 = iMA(NULL, 0, 5, 0, MODE_SMA, PRICE_CLOSE, Current + 1);
double Sell1_2 = iMA(NULL, 0, 5, 0, MODE_SMA, PRICE_OPEN, Current + 1);
double Sell2_1 = iMA(NULL, 0, 5, 0, MODE_SMA, PRICE_CLOSE, Current + 2);
double Sell2_2 = iMA(NULL, 0, 5, 0, MODE_SMA, PRICE_OPEN, Current + 2);
double CloseBuy1_1 = iMA(NULL, 0, 5, 0, MODE_SMA, PRICE_CLOSE, Current + 1);
double CloseBuy1_2 = iMA(NULL, 0, 5, 0, MODE_SMA, PRICE_OPEN, Current + 1);
double CloseSell1_1 = iMA(NULL, 0, 5, 0, MODE_SMA, PRICE_CLOSE, Current + 1);
double CloseSell1_2 = iMA(NULL, 0, 5, 0, MODE_SMA, PRICE_OPEN, Current + 1);
//+------------------------------------------------------------------+
//| Variable End |
//+------------------------------------------------------------------+
//Check position
bool IsTrade = False;
for (int i = 0; i < Total; i ++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderType() <= OP_SELL && OrderSymbol() == Symbol()) {
IsTrade = True;
if(OrderType() == OP_BUY) {
//Close
//+------------------------------------------------------------------+
//| Signal Begin(Exit Buy) |
//+------------------------------------------------------------------+
if (CloseBuy1_1 < CloseBuy1_2) Order = SIGNAL_CLOSEBUY;
//+------------------------------------------------------------------+
//| Signal End(Exit Buy) |
//+------------------------------------------------------------------+
if (Order == SIGNAL_CLOSEBUY&&(OrderProfit()<0||OrderProfit()>=TakeProfit)&&(
(EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
continue;
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if(Bid - OrderOpenPrice() > Point * TrailingStop) {
if(OrderStopLoss() < Bid - Point * TrailingStop) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
} else {
//Close
//+------------------------------------------------------------------+
//| Signal Begin(Exit Sell) |
//+------------------------------------------------------------------+
if (CloseSell1_1 > CloseSell1_2) Order = SIGNAL_CLOSESELL;
//+------------------------------------------------------------------+
//| Signal End(Exit Sell) |
//+------------------------------------------------------------------+
if (Order == SIGNAL_CLOSESELL&&(OrderProfit()<0||OrderProfit()>=TakeProfit)&&
((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
continue;
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) {
if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
}
}
}
//+------------------------------------------------------------------+
//| Signal Begin(Entry) |
//+------------------------------------------------------------------+
if (Buy1_1 > Buy1_2 && Buy2_1 <= Buy2_2) Order = SIGNAL_BUY;
if (Sell1_1 < Sell1_2 && Sell2_1 >= Sell2_2) Order = SIGNAL_SELL;
//+------------------------------------------------------------------+
//| Signal End |
//+------------------------------------------------------------------+
//Buy
if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Check free margin
if (AccountFreeMargin() < (1000 * Lots)) {
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;
if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;
Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);
if(Ticket > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print("BUY order opened : ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");
} else {
Print("Error opening BUY order : ", GetLastError());
}
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}
//Sell
if (Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Check free margin
if (AccountFreeMargin() < (1000 * Lots)) {
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
if (UseStopLoss) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0;
if (UseTakeProfit) TakeProfitLevel = Bid - TakeProfit * Point; else TakeProfitLevel = 0.0;
Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink);
if(Ticket > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print("SELL order opened : ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell");
} else {
Print("Error opening SELL order : ", GetLastError());
}
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}
if (!EachTickMode) BarCount = Bars;
return(0);
}
//+------------------------------------------------------------------+
- 18-07-2013, 05:39 AM #4168
رد:موضوع مخصص للأسئلة البرمجية
وعليكم السلام ورحمة الله وبركاته
هذا الشرط بسيط
فمثلا في الشمعه الصاعده سوف تضع الشرط إذا كان الإغلاق أكبر من الإفتتاح يتم فتح شراء
مثال
كود PHP:if(Close[1]>Open[1])
{
OrderSend(Symbol(),OP_BUY,Lot,Ask,3,0,0,"ea",Magic,0,Green);
}
كود PHP:if(Close[1]<Open[1])
{
OrderSend(Symbol(),OP_SELL,Lot,Bid,3,0,0,"ea",Magic,0,Green);
}
- 18-07-2013, 05:46 AM #4169
رد:موضوع مخصص للأسئلة البرمجية
طيب بعيدا عن هذا الشرط تماما
يمكنك إضافة شرط آخر بحيث لن يغلق هيدج الشراء مع البيع إلا إذا كان السعر الحالي أكبر من سعر إفتتاح صفقة أكبر من أو يساوي سعر الأمر المعلق شراء 2
أو طبعا حتى تجعل الشرط عام يكون إغلاق الهيدج بيع + شراء إذا كان السعر أكبر من أمر الشراء السابق للأمر المفتوح فعند بداية البحث سترى كم رقم أمر الشراء الحالي مثلا رقمه 5 بالتالي سوف تبحث في الأوامر من 4 إلى 0
لتجد أمر الشراء السابق
- 18-07-2013, 05:47 AM #4170
المواضيع المتشابهه
-
موضوع مخصص للاكسبيرتات اللتي يستخدمها الاعضاء على الحقيقي,,عندك اكسبيرت ممتاز ضعه هنا
By محمد معمو in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 11آخر مشاركة: 15-12-2023, 02:03 PM -
عااااااااااااجل ( موضوع مخصص للفرص الفورية)!!!
By عاشق الذبذبـة in forum توقعات وتوصيات سوق العملاتمشاركات: 280آخر مشاركة: 27-08-2009, 10:30 PM