النتائج 7,471 إلى 7,485 من 10335
الموضوع: موضوع مخصص للأسئلة البرمجية
- 09-07-2016, 01:40 AM #7471
أستفسار آخر فضلاً :
هل ممكن عمل اكسبريت وظيفتة Scan فقط
مثلاً لمعرفة السلوك السعري للعمله
مثال :
اكسبريت يقوم بفتح ( شراء او بيع ماركت ) وفيه ( هدف ووقف )
ثم يعطي بيانات كالتالي :
- عدد الصفقات المتتاليه الناجحه
صفقتين ناجحتين متتاليه = 46
ثلاث صفقات ناجحه متتاليه = 13
اربع ...
خمس ...
- عدد الصفقات المتتاليه الخاسره
صفقتين خاسرتين متتاله = 20
ثلاث صفقات خاسره متتاليه = 13
اربع ...
خمس ...
- 10-07-2016, 08:59 PM #7472
سؤال اخر فضلاً :
هل ممكن عمل شرط لا يفتح صفقه إلا بعد " ثلاث خسارات متتاليه " فقط ؟
وهل ممكن إرسال اوامر وفتح صفقات " وهميه " حتى لا أستخدم المال الحقيقي في المحفظه إذا كانت استراتيجتي الدخول بعد ثلاث صفقات خاسره
- 11-07-2016, 06:21 PM #7473
كنت قد عملت فكره سابقه مشابهه لها
بحيث عندما يعطي شروط فتح الصفقه تقوم بتسجيل سعر دخولها والأستوب والهدف في متغير ثم تراقب هذه الأسعار وتحدد عندما يصل إلى الاستوب يقوم بحفظ أن الصفقه الوهميه أغلقت على خساره
مثال
كود PHP:static double BuyOrdersInfo[][3];
static int LossCounter=0;
if(RSI<30)
{
// buy signal
int size=ArrayRange(BuyOrdersInfo,0);
ArrayResize(BuyOrdersInfo,size+1);
BuyOrdersInfo[size][0]=Ask;
BuyOrdersInfo[size][1]=SL;
BuyOrdersInfo[size][2]=TP;
}
size=ArrayRange(BuyOrdersInfo,0);
for(int i=0;i<size;i++)
{
if(Bid>=BuyOrdersInfo[i][2])
{
// order reached target
LossCounter=0;
}
if(Bid<=BuyOrdersInfo[i][1])
{
// order reached stoploss
LossCounter++;
}
}
- 11-07-2016, 06:33 PM #7474
نعم يمكنك عمل دالة بسيطه سوف تقوم بهذه المهمه عن طريق البحث في الهيستوري ثم طباعة الناتج
مثال
كود PHP:void CountTrades()
{
int win,loss;
int winCycle[5];
int lossCycle[5];
for(int i=0;i<OrdersHistoryTotal()-1;i>=0;i--)
{
bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
if(OrderProfit()>0)
{
if(loss>0)
{
lossCycle[loss-1]++;
loss=0;
}
win++;
}
if(OrderProfit()<0)
{
if(win>0)
{
winCycle[win-1]++;
win=0;
}
loss++;
}
}
}
Print("Win 1 Number : "+winCycle[0]);
Print("Win 2 Number : "+winCycle[1]);
Print("Win 3 Number : "+winCycle[2]);
Print("Win 4 Number : "+winCycle[3]);
Print("Win 5 Number : "+winCycle[4]);
}
- 11-07-2016, 07:18 PM #7475
- 11-07-2016, 07:19 PM #7476
- 11-07-2016, 07:34 PM #7477
- 11-07-2016, 07:36 PM #7478
هذه الأخطاء تظهر عندما يكون هناك إختلاف في البيانات التاريخيه من فريم إلى فريم آخر ونعم لها تأثير كبير على جودة الباك تست
لحل هذه المشكله عندما تقوم بتحميل بيانات تاريخيه لعمله معينه أو تقوم بإستيرادها فقم بتحميلها على فريم 1 دقيقه ثم بعد ذلك إستخدام سكربت Period Converter لإستيراد باقي التايم فريم المختلفه
- 11-07-2016, 07:38 PM #7479
تفضل
كود PHP://+------------------------------------------------------------------+//| Indicator: tadreeb for.mq4 |
//| Created with EABuilder.com |
//| http://eabuilder.com |
//+------------------------------------------------------------------+
#property copyright "Created with EABuilder.com"
#property link "http://eabuilder.com"
#property version "1.00"
#property description ""
#include <stdlib.mqh>
#include <stderror.mqh>
//--- indicator settings
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_type1 DRAW_ARROW
#property indicator_width1 1
#property indicator_color1 0xFFAA00
#property indicator_label1 "Buy"
//--- indicator buffers
double Buffer1[];
double myPoint; //initialized in OnInit
void myAlert(string type, string message)
{
if(type == "print")
Print(message);
else if(type == "error")
{
Print(type+" | tadreeb for @ "+Symbol()+","+Period()+" | "+message);
}
else if(type == "order")
{
}
else if(type == "modify")
{
}
}
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
IndicatorBuffers(1);
SetIndexBuffer(0, Buffer1);
SetIndexEmptyValue(0, 0);
SetIndexArrow(0, 241);
//initialize myPoint
myPoint = Point();
if(Digits() == 5 || Digits() == 3)
{
myPoint *= 10;
}
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
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[])
{
int limit = rates_total - prev_calculated;
//--- counting from 0 to rates_total
ArraySetAsSeries(Buffer1, true);
//--- initial zero
if(prev_calculated < 1)
{
ArrayInitialize(Buffer1, 0);
}
else
limit++;
//--- main loop
for(int i = limit-1; i >= 0; i--)
{
if (i >= MathMin(5000-1, rates_total-1-50)) continue; //omit some old rates to prevent "Array out of range" or slow calculation
//Indicator Buffer 1
if(iMA(NULL, PERIOD_CURRENT, 14, 0, MODE_SMA, PRICE_CLOSE, i) > iMA(NULL, PERIOD_CURRENT, 28, 0, MODE_SMA, PRICE_CLOSE, i)
&& iMA(NULL, PERIOD_CURRENT, 14, 0, MODE_SMA, PRICE_CLOSE, i+1) < iMA(NULL, PERIOD_CURRENT, 28, 0, MODE_SMA, PRICE_CLOSE, i+1) //Moving Average crosses above Moving Average
)
{
Buffer1[i] = Low[i]; //Set indicator value at Candlestick Low
}
else
{
Buffer1[i] = 0;
}
}
return(rates_total);
}
double CrossPrice(int crossNum)
{
int cross;
for(int i=1;i<Bars;i++)
{
double ma_fast=iMA(Symbol(),0,14,0,0,PRICE_CLOSE,i);
double ma_slow=iMA(Symbol(),0,28,0,0,PRICE_CLOSE,i);
double ma_fast_pr=iMA(Symbol(),0,14,0,0,PRICE_CLOSE,i+1);
double ma_slow_pr=iMA(Symbol(),0,28,0,0,PRICE_CLOSE,i+1);
if(ma_fast>ma_slow&&ma_fast_pr<=ma_slow_pr)
{
cross++;
if(cross>=crossNum)return(ma_fast);
}
else if(ma_fast<ma_slow&&ma_fast_pr>=ma_slow_pr)
{
cross++;
if(cross>=crossNum)return(ma_fast);
}
}
return(0);
}
//+------------------------------------------------------------------+
- 12-07-2016, 03:56 AM #7480
- 12-07-2016, 03:33 PM #7481
- 12-07-2016, 07:46 PM #7482
- 12-07-2016, 08:19 PM #7483
نعم أولا قم بحذف البيانات التاريخيه السابقه ثم مثلا لو تريد عمل شارت 15 دقيقه فيمكنك فتح شارت 1 دقيقه ثم حدد في قيمة Period Multiple Factor = 15
فهذا يعني أن الإسكربت سوف يضرب قيمة 15 في 1 دقيقه أي سيعطي شارت 15 دقيقه
بنفس الطريق سوف تطبقها فيمكنك عمل شارت مثلا الساعتين عن طريق فتح شارت الساعه ثم تجعل Period Multiple Factor=2 أو تفتح شارت النصف ساعه وتجعل Period Multiple Factor=4
أو تفتح شارت الدقيقه وتجعل Period Multiple Factor=120 بما أن الساعتين = 120 دقيقه
وهكذا
- 12-07-2016, 08:39 PM #7484
- 13-07-2016, 07:56 AM #7485
سوال بسيط او طلب
اريد داله او وضيفه لاضعها في اكسبيرت لتحسب اللوت اتوماتيكيا على حسب رافعه الحساب من متغير الريسك
مثلا الريسك 100 والرافعه 1:100 اريده يسحب اقصى لوت
الريسك 100 والرافعه 1:500 اريده يسحب اقصى لوت
شاكر لكم مقدماآخر تعديل بواسطة السمحان ، 13-07-2016 الساعة 07:59 AM
المواضيع المتشابهه
-
موضوع مخصص للاكسبيرتات اللتي يستخدمها الاعضاء على الحقيقي,,عندك اكسبيرت ممتاز ضعه هنا
By محمد معمو in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 11آخر مشاركة: 15-12-2023, 02:03 PM -
عااااااااااااجل ( موضوع مخصص للفرص الفورية)!!!
By عاشق الذبذبـة in forum توقعات وتوصيات سوق العملاتمشاركات: 280آخر مشاركة: 27-08-2009, 10:30 PM