النتائج 1 إلى 3 من 3
- 25-08-2023, 01:54 PM #1
اخوانى خطأ بسيط اريد اصلاحه فى هذا الكود ان تكرمتم
كود PHP:
// دالة اختبار الشروط لفتح صفقة
bool CheckConditions(double maPeriod, double deviation, double entryDistance) {
double maValue = iMA(NULL, 0, maPeriod, 0, MODE_SMA, PRICE_CLOSE, 0);
double currentPrice = Bid;
double lowestPrice = iLowest(NULL, 0, MODE_LOW, (int)(entryDistance / Point), 1);
if(currentPrice < maValue) {
if(currentPrice <= lowestPrice - deviation)
return true;
}
return false;
}
// دالة فتح صفقة للشراء
void OpenBuyOrder(double lotSize, double maPeriod, double deviation, double entryDistance, double stopLoss) {
double maValue = iMA(NULL, 0, maPeriod, 0, MODE_SMA, PRICE_CLOSE, 0);
double currentPrice = Bid;
int ticket = OrderSend(NULL, OP_BUY, lotSize, currentPrice, 3, currentPrice - stopLoss * Point, 0, "");
if(ticket > 0) {
while(!OrderSelect(ticket, SELECT_BY_TICKET)) {
Sleep(100);
}
double takeProfit = maValue;
OrderModify(ticket, OrderOpenPrice(), takeProfit, OrderStopLoss(), 0, Green);
}
}
// دالة فتح صفقة للبيع
void OpenSellOrder(double lotSize, double maPeriod, double deviation, double entryDistance, double stopLoss) {
double maValue = iMA(NULL, 0, maPeriod, 0, MODE_SMA, PRICE_CLOSE, 0);
double currentPrice = Bid;
int ticket = OrderSend(NULL, OP_SELL, lotSize, currentPrice, 3, currentPrice + stopLoss * Point, 0, "");
if(ticket > 0) {
while(!OrderSelect(ticket, SELECT_BY_TICKET)) {
Sleep(100);
}
double takeProfit = maValue;
OrderModify(ticket, OrderOpenPrice(), takeProfit, OrderStopLoss(), 0, Red);
}
}
// دالة التنفيذ الرئيسية
int start() {
double lotSize = 0.01; // حجم اللوت
double maPeriod = 1000; // فترة المتوسط المتحرك البسيط
double deviation = 0.001; // انحراف السعر عند الدخول
double entryDistance = 20; // انحراف السعر اللازم للدخول بين عقدي الشراء
double stopLoss = 20; // قيمة وقف الخسارة
if(CheckConditions(maPeriod, deviation, entryDistance)) {
if(OrderType() == OP_BUY) {
if(iCandles(NULL, 0, 0, 1, 1) < 0) {
OpenSellOrder(lotSize, maPeriod, deviation, entryDistance, stopLoss);
}
}
else if(OrderType() == OP_SELL) {
if(iCandles(NULL, 0, 1, 1, 1) > 0) {
OpenBuyOrder(lotSize, maPeriod, deviation, entryDistance, stopLoss);
}
}
else {
OpenBuyOrder(lotSize, maPeriod, deviation, entryDistance, stopLoss);
}
}
return 0;
}
- 25-08-2023, 04:40 PM #2
iCandles دالة يتم استخدامها وهى غير معرفة هذا سبب المشكلة ولحل المشكلة ما هو قصدك باستخدام هذه الدالة
- 25-08-2023, 07:21 PM #3