Привет, CB, Он запускает сделки, но я не делал детального просмотра сделок, чтобы увидеть, правильно ли соблюдается логика (на первый взгляд кажется, что да). Так что это время, когда я говорю огромное "СПАСИБО ВАМ!!!!" :-)
До прибыльной работы стратегии еще далеко, так как код - это всего лишь способ автоматизировать сделки, мне нужно еще немного поработать над самой стратегией. Похоже, что все эти усилия окупились, но я все еще очень озадачен кодированием. Я собираюсь начать создавать небольшие коды для отображения комментариев на моих графиках и возиться с ними, чтобы помочь мне изучить функции и другие вещи, которые вы использовали. Я очень ценю вашу помощь с этим CB, и ваше терпение, когда я спрашивал одно и то же и делал одни и те же ошибки снова и снова. Спасибо!
CB, это напомнило мне кое о чем. Как я могу внести поправку в ваш код, чтобы позволить 2 или максимум 3 сделки быть открытыми в одном направлении (это как версия 2 вашего кода). Мы использовали OP_BUY/OP_SELL для старого кода, поэтому нам нужно будет изменить несколько вещей. Если вы скажете мне в "скелетной" форме, что нужно сделать (например: построить функцию, чтобы сделать это...), то я могу попробовать закодировать это и вернуть вам на рассмотрение. Этот способ лучше, чем если бы вы сами написали код, так как я буду следовать вашей логике и изучать части кодирования. Что скажете? (Я вижу, что у нас есть внешняя переменная, в которой мы задаем, сколько сделок в одном направлении нам разрешено, затем мы делаем функцию для расчета покупок, другую для расчета продаж, затем мы вызываем эти две функции в start() и проверяем внешнюю переменную там же... что-то вроде этого?
Задайте себе параметр, который является максимальным количеством открытых ордеров. Расширьте его, если вам нужно часто менять.
Затем реализуйте, изменив только функцию fnOrderDuplicate() - вам не придется менять функцию start(). Это поможет сохранить существующую архитектуру приложения.
Привет, CB, я потратил около 2 часов, пытаясь сделать то, что вы просили в вышеупомянутом сообщении, посмотрел другие коды, документацию, и никакого прогресса (я просто не знаю, что делать). Блин, я все время так застреваю, это так раздражает, даже в самых простых вещах! Должен быть способ научиться легче, чем то, как я делаю сейчас, так как я чувствую, что у меня нет никакого прогресса в обучении, вы, ребята, любезно пишете весь код для меня.
bool fnOrderDuplicate(){
iDuplicateOrders =0;//setting orderdup to zero
iOrders =OrdersTotal()-1;//iOrders returns market orders count - 1. So if zero orders, we get -1for(int i= iOrders; i>=0; i--)// the loop to cycle through total orders{OrderSelect( i, SELECT_BY_POS, MODE_TRADES);//select order for functionif((OrderType()!=OP_BUY)&&(OrderType()!=OP_SELL))//if order is NOT op-buy and is NOT op-sell, sCurrentOrderType = other (ie no order)
sCurrentOrderType ="OTHER";if(OrderType()==OP_BUY)//if order=buy, sCurrent OrderType = buy
sCurrentOrderType ="BUY";//***7Jul09 ';' was missing at end of lineif(OrderType()==OP_SELL)//***7Jul09: the end ')' was missing.
sCurrentOrderType ="SELL";//if orderfound = sell, sCurrentOrder= sellif((OrderSymbol()==Symbol())&&( sCurrentOrderType == sSignal))//if ordersymbolfortheorder= symbolforchart && ScurrentOrder = sSignal(fn_entryrules)
iDuplicateOrders++;//iDuplicateOrders is added 1}if( iDuplicateOrders ==0)//if iduporders = 0 then fnOrderDuplicate = false, otherwise it's true.return(false);return(true);}
Привет CB, спасибо за это. С этой опцией я не могу регулировать, сколько открытых ордеров разрешено в одном направлении (допустим, я делаю extern iMaxDuplicateOrders = 4;) ea будет запускать 4 шорта, а не распределять параметр равномерно (например: 2 шорта макс, 2 лонга макс). Может мне попробовать сделать дубликат bool fnOrderDuplicate (например: bool fnOrderDuplicateBuys, и bool fnOrderDuplicateSells) и затем ссылаться на каждый из них соответственно в bool fnShouldWeTrade. На мой взгляд, это может сработать, а как вы считаете?
Привет CB, спасибо за это. С этой опцией я не могу регулировать, сколько открытых ордеров разрешено в одном направлении (допустим, я делаю extern iMaxDuplicateOrders = 4;) ea будет запускать 4 шорта, а не распределять параметр равномерно (например: 2 шорта макс, 2 лонга макс). Может мне попробовать сделать дубликат bool fnOrderDuplicate (например: bool fnOrderDuplicateBuys, и bool fnOrderDuplicateSells) и затем ссылаться на каждый из них соответственно в bool fnShouldWeTrade. На мой взгляд, это может сработать, а как вы считаете?
Установка iMaxDuplicateOrders = 4 будет означать, что максимум будет 4 ордера в каждом направлении, так как мы проверяем направление перед увеличением счетчика.
Похвально, когда похвально. В данном случае следует поступить наоборот. Прошу прощения - я уже был разочарован тем, что вы не внесли поправку сами. Все, что нужно было сделать, это изменить лимит с одного ордера на переменную.
Из примечаний ясно, что вы просто переписываете код в прозе, не понимая логики.
Спасибо CB, я должен был это заметить, так что ошибка была в самом конце (130).
Работает ли он?
CB
Привет, CB, Он запускает сделки, но я не делал детального просмотра сделок, чтобы увидеть, правильно ли соблюдается логика (на первый взгляд кажется, что да). Так что это время, когда я говорю огромное "СПАСИБО ВАМ!!!!" :-)
До прибыльной работы стратегии еще далеко, так как код - это всего лишь способ автоматизировать сделки, мне нужно еще немного поработать над самой стратегией. Похоже, что все эти усилия окупились, но я все еще очень озадачен кодированием. Я собираюсь начать создавать небольшие коды для отображения комментариев на моих графиках и возиться с ними, чтобы помочь мне изучить функции и другие вещи, которые вы использовали. Я очень ценю вашу помощь с этим CB, и ваше терпение, когда я спрашивал одно и то же и делал одни и те же ошибки снова и снова. Спасибо!
Это будет просто.
Задайте себе параметр, который является максимальным количеством открытых ордеров. Расширьте его, если вам нужно часто менять.
Затем реализуйте, изменив только функцию fnOrderDuplicate() - вам не придется менять функцию start(). Это поможет сохранить существующую архитектуру приложения.
CB
Привет, CB, я потратил около 2 часов, пытаясь сделать то, что вы просили в вышеупомянутом сообщении, посмотрел другие коды, документацию, и никакого прогресса (я просто не знаю, что делать). Блин, я все время так застреваю, это так раздражает, даже в самых простых вещах! Должен быть способ научиться легче, чем то, как я делаю сейчас, так как я чувствую, что у меня нет никакого прогресса в обучении, вы, ребята, любезно пишете весь код для меня.
Привет, CB, есть помощь по вышеуказанному вопросу, как исправить код, чтобы сделать несколько сделок в одном направлении?
Просто измените: if (iDuplicateOrders == 0) на: if (iDuplicateOrders<= iMaxDuplicateOrders)
CB
Привет CB, спасибо за это. С этой опцией я не могу регулировать, сколько открытых ордеров разрешено в одном направлении (допустим, я делаю extern iMaxDuplicateOrders = 4;) ea будет запускать 4 шорта, а не распределять параметр равномерно (например: 2 шорта макс, 2 лонга макс). Может мне попробовать сделать дубликат bool fnOrderDuplicate (например: bool fnOrderDuplicateBuys, и bool fnOrderDuplicateSells) и затем ссылаться на каждый из них соответственно в bool fnShouldWeTrade. На мой взгляд, это может сработать, а как вы считаете?
Привет CB, спасибо за это. С этой опцией я не могу регулировать, сколько открытых ордеров разрешено в одном направлении (допустим, я делаю extern iMaxDuplicateOrders = 4;) ea будет запускать 4 шорта, а не распределять параметр равномерно (например: 2 шорта макс, 2 лонга макс). Может мне попробовать сделать дубликат bool fnOrderDuplicate (например: bool fnOrderDuplicateBuys, и bool fnOrderDuplicateSells) и затем ссылаться на каждый из них соответственно в bool fnShouldWeTrade. На мой взгляд, это может сработать, а как вы считаете?
Установка iMaxDuplicateOrders = 4 будет означать, что максимум будет 4 ордера в каждом направлении, так как мы проверяем направление перед увеличением счетчика.
Похвально, когда похвально. В данном случае следует поступить наоборот. Прошу прощения - я уже был разочарован тем, что вы не внесли поправку сами. Все, что нужно было сделать, это изменить лимит с одного ордера на переменную.
Из примечаний ясно, что вы просто переписываете код в прозе, не понимая логики.
CB