как программно записать цену открытия либо цену закрытия в буфер обмена?

 

Как пример - по цифровым клавишам переключать таймфрейм.


Хочу чтобы при нажатии ctrl+C в буфер записывалась цена открытия.

Это удобно для получения уровней. Спасибо.

//+------------------------------------------------------------------+

//|                                                      hotKeys.mq4 |
//|                                     Copyright 2015,Mohit Marwaha |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, Mohit Marwaha"
#property link      "marwaha1@gmail.com"
#property version   "1.20"
#property strict
#property indicator_chart_window
#property description "Keys 1 through 9 change timeframes from 1 minute to Monthly"
#define KEY_MONTHLY 57
#define KEY_WEEKLY 56
#define KEY_DAILY 55
#define KEY_4HOUR 54
#define KEY_1HOUR 53
#define KEY_30MIN 52
#define KEY_15MIN 51
#define KEY_5MIN 50
#define KEY_1MIN 49
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   Comment("Copyright MohitMarwaha");
//---
   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[])
  {
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//---
   if(id==CHARTEVENT_KEYDOWN)
     {
      switch(int(lparam))
        {
         case KEY_WEEKLY:ChartSetSymbolPeriod(0,NULL,10080);
         break;
         case KEY_DAILY:ChartSetSymbolPeriod(0,NULL,1440);
         break;
         case KEY_4HOUR:ChartSetSymbolPeriod(0,NULL,240);
         break;
         case KEY_1HOUR:ChartSetSymbolPeriod(0,NULL,60);
         break;
         case KEY_5MIN:ChartSetSymbolPeriod(0,NULL,5);
         break;
         case KEY_30MIN:ChartSetSymbolPeriod(0,NULL,30);
         break;
         case KEY_15MIN:ChartSetSymbolPeriod(0,NULL,15);
         break;
         case KEY_MONTHLY:ChartSetSymbolPeriod(0,NULL,43200);
         break;
         case KEY_1MIN:ChartSetSymbolPeriod(0,NULL,1);
         break;
        }
      ChartRedraw();
     }
  }
//+------------------------------------------------------------------+

Автоматический трейдинг и тестирование торговых стратегий
Автоматический трейдинг и тестирование торговых стратегий
  • www.mql5.com
Выберите подходящую торговую стратегию и оформите подписку на нее в пару кликов. Все Сигналы сопровождаются подробной статистикой и графиками. Станьте Поставщиком торговых сигналов и продавайте подписку тысячам трейдеров по всему миру. Наш сервис позволит вам хорошо зарабатывать на прибыльной стратегии даже при небольшом стартовом капитале...
 
operlay:

Как пример - по цифровым клавишам переключать таймфрейм.


Хочу чтобы при нажатии ctrl+C в буфер записывалась цена открытия.

Это удобно для получения уровней. Спасибо.


Записать не проблема, но для начала Вам нужно определиться под каким индексом нужно делать запись в буфер. Ведь по сути буфер индикатора это массив. Например нажали Вы ctrl+C , в какую ячейку буфера нужно записать данные ? в 0 или 1 или 2 ... или может быть в 30 ?

P.S. Зачем всё так усложнять ?

Цену открытия для текущего таймфрейма можно получить так

Open[i]

для таймфрейма отличного от текущего (как пример D1)

iOpen(Symbol(), PERIOD_D1, i);

i - это индекс бара с которого нужны данные.

 
Sergey Kolemanov:
Записать не проблема, но для начала Вам нужно определиться под каким индексом нужно делать запись в буфер. Ведь по сути буфер индикатора это массив. Например нажали Вы ctrl+C , в какую ячейку буфера нужно записать данные ? в 0 или 1 или 2 ... или может быть в 30 ?

Буфер обмена и буфер индикатора это разные вещи.

 
Evgeny Belyaev:

Буфер обмена и буфер индикатора это разные вещи.


Если так то да...

А где там написано что это буфер обмена ? 

 
Sergey Kolemanov:

А где там написано что это буфер обмена ? 

В заголовке темы.

operlay:

Хочу чтобы при нажатии ctrl+C в буфер записывалась цена открытия.

только через winapi, код на форуме можно найти
 
Вопросы от начинающих MQL5 MT5 MetaTrader 5
Вопросы от начинающих MQL5 MT5 MetaTrader 5
  • 2017.08.22
  • www.mql5.com
Подскажите пожалуйста, такой показатель тестера в жизни реален? И хороший это или плохой результат за год с депо 3000...
 

Спасибо!!! то что надо!!В буфер обмена надо. Чтобы затем эти данные удобнее ставить для уведомлений от индикатора который находит уровни.