[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 321

 
Boneshapper:

Меня тут мысль посетила.Я когда пишу, я не пишу перед условием что Flag=0;потому что тогда он будет каждый раз обновляться перед сделкой и всегда будет равен 0.Если мы не указываем значение,например просто int Flag,программа присваивает ему 0,верно?

Я Вам написал код, в котором Flag стоит за пределами функции старт, а не внутри. Если Вы его поставили внутри, то он бесполезен.
 
Roger:

Странно, код рабочий. Может не туда прилепили?
Я понял в чем дело, значение Flag давалось внутри if, и почему он ее терял при выходе из нее.Я поставил тип переменной static int Flag.Все,теперь все работает
 
Roger:

Я Вам написал код, в котором Flag стоит за пределами функции старт, а не внутри. Если Вы его поставили внутри, то он бесполезен.

Извините,написал ответ,а Вашего ответа не видел
Да-да,вы правы.Я именно так и ошибся.но выход нашелся в применении Static

Спасибо большое Вам за все

 

Доброй ночи!

Подскажите пожалуйста,есть функция

int start()
{
OrderSend (Symbol(), OP_SELL, Loot,Bid, 50, SL, TP,NULL,1001,0,L);
if (OrderSelect(1001, SELECT_BY_TICKET)== true)
int Ticket = OrderTicket ();
Alert ("Ticket =",Ticket);
OrderClose(Ticket,Loot,Ask,50,R);
}

Так ордер закроется?я немного не пойму,как пользовалться параметром magic в функции ordersend, чтобы потом искать ордер по этому номеру?

И когда используешь функцию

bool OrderSelect( int index, int select)
с вариантом SELECT_BY_TICKET,какой указывать index?

 

Чтобы пользоваться магиком, его надо сначала задать, например как у Вас, а потом при обходе проверять на его наличие

int start()
{
OrderSend (Symbol(), OP_SELL, Loot,Bid, 50, SL, TP,NULL,1001,0,L);
//...
for(int i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i, SELECT_BY_POS);
if(OrderMagic()==1001)
{

Alert ("Ticket =",OrderTicket()); 
OrderClose(OrderTicket(),Loot,Ask,50,R); 
}}}
 

Привет, Всем!!!

Интересует вопрос: Можноли из эксперта (MQL4) организовать доступ к истории сделок?

А именно, что предидущая сделка была убыточна, ей предшествующая прибыльной и так на 10 сделок в глубь истории?

Нужно для ММ, так как эксперт после большой убыточной сделки проводит ряд прибыльных.

Идея: после убыточной сдеки, начать наращивание позиции например в трех или пяти последующих сделках и ждать следующей

убыточной сделки.

 

Не трогай всех, спят еще, суббота как-никак.

Доступ организовать можно, ищи в codebase советники с контрольным словом "мартингейл" (мартингал).

 
Tatar:

Привет, Всем!!!

Интересует вопрос: Можноли из эксперта (MQL4) организовать доступ к истории сделок?

А именно, что предидущая сделка была убыточна, ей предшествующая прибыльной и так на 10 сделок в глубь истории?

Нужно для ММ, так как эксперт после большой убыточной сделки проводит ряд прибыльных.

Идея: после убыточной сдеки, начать наращивание позиции например в трех или пяти последующих сделках и ждать следующей

убыточной сделки.


Конечно возможно. Посмотри здесь - основу для себя возьмешь и поправишь под свои торговые условия.

Привожу для примера - организацию работы по итогам последнего закрытого ордера (свежайшего в истории ордеров - как это у меня организовано)

//---Поиск последнего отработавшего ордера для открытия очередной позиции ---
   
   for (orderIndex = (OrdersHistoryTotal() - 1); orderIndex >= 0; orderIndex--)
   {   
      if (!OrderSelect(orderIndex, SELECT_BY_POS, MODE_HISTORY))
      {
         Print("Ошибка при доступе к исторической базе (",GetLastError(),")");
         continue;
      }
   
      if ((OrderSymbol() != Symbol()) || (OrderMagicNumber() != MagicNumber))
      {
         continue;
      }
      
        
   //-------------------------Принимаем в расчет только ордер, закрытый недавно-----------------------
if(time<OrderCloseTime())     //(сравниваем его с хранящимся в пероеменной time) 
  {
    time=OrderCloseTime();     //если время закрытия ордера больше - ложим его в переменную
         
         
     
         int lastType = OrderType();
         double lastLots = OrderLots();
         double lastProfit = OrderProfit() + OrderSwap();
         
        // Print ("lastProfit = ", NormalizeDouble(lastProfit, 1));
         
       
         
         // Анализ только что закрывшегося ордера
      
         if (lastProfit >= 0.0)
         {.... Здесь действия, при положительном профите ордера...
 .....
......
......
 
 
artmedia70:

double iMA( string symbol, int timeframe, int period, int ma_shift, int ma_method, int applied_price, int shift)

Расчет скользящего среднего.
Параметры:
symbol - Символьное имя инструмента, на данных которого будет вычисляться индикатор. NULL означает текущий символ.
timeframe - Период. Может быть одним из периодов графика. 0 означает период текущего графика.
period - Период усреднения для вычисления скользящего среднего.
ma_shift - Сдвиг индикатора относительно ценового графика.
ma_method - Метод усреднения. Может быть любым из значений методов скользящего среднего (Moving Average).
applied_price - Используемая цена. Может быть любой из ценовых констант.
shift - Индекс получаемого значения из индикаторного буфера (сдвиг относительно текущего бара на указанное количество периодов назад).


Как видите ma_shift - целое число (количество баров, на которые сдвигается линия МАшки вправо или влево). А +/-0,21% - double, значит не выйдет.

Иль я чего-то недопонимаю в ваших желаниях?

Все верно вы понимаете. Просто в Румусе (Форекс Клуб) есть такая возможность и данный "конверт" - это основа ТС "Консервативный скальпинг интрадей". Вот и хотел тоже самое зделать МТ4. Но видать из вашего объяснения не судьба :)

 

Rimlyanin:

Все верно вы понимаете. Просто в Румусе (Форекс Клуб) есть такая возможность и данный "конверт" - это основа ТС "Консервативный скальпинг интрадей". Вот и хотел тоже самое зделать МТ4. Но видать из вашего объяснения не судьба :)

вас не поняли.

если вам надо конверт, то МА сдвигается вверх и вниз, и для этого есть конкретный индюк Envelop или же уровни в самом МА на третьей вкладке.

а ma_shift - это сдвиг влево, вправо (как в Аллигаторе)