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

 

Напомню ситуацию

Подскажите пожалуйста в след:

1.есть функция "if (timecur == "08:00:00") OrderSend (Symbol(), OP_BUY, Loot, Ask, 50, SL, TP,NULL,0,0,L);"

2.Тестирую ее в период с 23.08.2010-23.10.2010г.

3.До 12.10.2010 сделки открываются нормально по 1 шт.

4.А вот 12.10.2010 функция открывает максимально сделок,насколько это позволяет депозит(около 7 шт)

Не могу понять причину,можете быть такое, что за секунду успевает пройти как минимум 5 тиков и вследствие чего успевает столько открыть?или тут в другом дело?Если все таки первый вариант,подскажите пожалуйста как прописать чтобы сделка открывалась только один раз?

Буду очень благодарен,спасибо

 
Проще всего проверять наличие заданного количества ордеров в рынке перед открытием нового.
 
Boneshapper:

Напомню ситуацию

Подскажите пожалуйста в след:

1.есть функция "if (timecur == "08:00:00") OrderSend (Symbol(), OP_BUY, Loot, Ask, 50, SL, TP,NULL,0,0,L);"

2.Тестирую ее в период с 23.08.2010-23.10.2010г.

3.До 12.10.2010 сделки открываются нормально по 1 шт.

4.А вот 12.10.2010 функция открывает максимально сделок,насколько это позволяет депозит(около 7 шт)

Не могу понять причину,можете быть такое, что за секунду успевает пройти как минимум 5 тиков и вследствие чего успевает столько открыть?или тут в другом дело?Если все таки первый вариант,подскажите пожалуйста как прописать чтобы сделка открывалась только один раз?

Буду очень благодарен,спасибо

Вот простенькая функция проверки количества открытых ордеров:

 int Opened(){
     int Orders=0;
     for (int cnt=OrdersTotal()-1; cnt>=0; cnt--){
       if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)){
         if(OrderSymbol()==Symbol()){
           if(OrderMagicNumber()==Magic){
               if(OrderType()<2)Orders++;
      } } } }       
  return(Orders);
} 

Функция Opened() должна находиться за пределами функции start(). Можно в самом конце кода.

В Ваше условие вставьте:

if (timecur == "08:00:00" && Opened()==0) OrderSend (Symbol(), OP_BUY, Loot, Ask, 50, SL, TP,NULL,0,0,L);
 
DhP:

Вот простенькая функция проверки количества открытых ордеров:

В Ваше условие вставьте:


Да,действительно помогло,но просто у меня будет открываться нескокольк ордеров,и они не должны быть между собой связаны.Хотелось бы чтобы каким-то определенным флагом ограничить открытие сделки и все.

Я прописывал так

int Control;

if ((timecur == "08:00:00") && (Control == 0)) OrderSend (Symbol(), OP_BUY, Loot,Ask, 50, SL, TP,NULL,0,0,L);
Alert (GetLastError());
Control = 1;

И ноль возврашался только когда я закрывал ордер

OrderClose(Ticket,Loot,Bid,50,R);
Alert (GetLastError());
Control = 0;

Но почему такая запись не помогла.Может я ошибся где-то?Помогите пожалуйста

 
Boneshapper:


Да,действительно помогло,но просто у меня будет открываться нескокольк ордеров,и они не должны быть между собой связаны.Хотелось бы чтобы каким-то определенным флагом ограничить открытие сделки и все.

Я прописывал так

int Control;

if ((timecur == "08:00:00") && (Control == 0)) OrderSend (Symbol(), OP_BUY, Loot,Ask, 50, SL, TP,NULL,0,0,L);
Alert (GetLastError());
Control = 1;

И ноль возврашался только когда я закрывал ордер

OrderClose(Ticket,Loot,Bid,50,R);
Alert (GetLastError());
Control = 0;

Но почему такая запись не помогла.Может я ошибся где-то?Помогите пожалуйста

Функцию Вы можете "кромсать", как хотите. Она может исполнить все Ваши желания.

Например, Вы можете указать, какого типа операции Вас интересуют или какие Магики, или ввести условие времени открытия позиции и еще много чего.

Вот пример разделения на Бай и Селл:

 int Opened(int OP){
     int Orders=0;
     for (int cnt=OrdersTotal()-1; cnt>=0; cnt--){
       if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)){
         if(OrderSymbol()==Symbol()){
           if(OrderMagicNumber()==Magic){
               if(OP==OP_BUY)Orders++;
               if(OP==OP_SELL)Orders++;
      } } } }       
  return(Orders);
 } 

Наши возможности ограничены только нашей фантазией. У Вас обязательно получится.

 
DhP:

Функцию Вы можете "кромсать", как хотите. Она может исполнить все Ваши желания.

Например, Вы можете указать, какого типа операции Вас интересуют или какие Магики, или ввести условие времени открытия позиции и еще много чего.

Вот пример разделения на Бай и Селл:

Наши возможности ограничены только нашей фантазией. Дерзайте и получится.


Буду пробывать,спасибо вам Огромное!
 

Кстати, по поводу Флагов.

Вы можете с помощью различных Флагов, как системой реле, переключать действия различных операций. Они вполне способны выполнить любые Ваши хотелки.

Но важно иметь ясную картину, что и как Вы хотите, чтобы работало.

Как на железнодорожной узловой станции, система перевода стрелок Вам должна быть ясна.

 

Ув. профи, скажите... Есть скрипт для построения на графике своих вычислений. Что-бы начать построение, приходится перетаскивать его на график из навигатора. Вопрос - можно ли сделать так, чтобы скрипт вызывался из панели "Графические инструменты" нажатием на клавишу (свою или присвоить одной из имеющихся)?

 
kon12:

Ув. профи, скажите... Есть скрипт для построения на графике своих вычислений. Что-бы начать построение, приходится перетаскивать его на график из навигатора. Вопрос - можно ли сделать так, чтобы скрипт вызывался из панели "Графические инструменты" нажатием на клавишу (свою или присвоить одной из имеющихся)?


Горячие клавиши

Горячими клавишами (клавишами-акселераторами) называются клавиши и комбинации клавиш, позволяющие быстро выполнять различные команды без обращения к меню или панелям управления.

  • " ï " — прокрутка графика влево;

  • " ð " — прокрутка графика вправо;

  • " ñ " — быстрая прокрутка графика влево, а в случае фиксированного масштаба — прокрутка графика вверх;

  • " ò " быстрая прокрутка графика вправо, а в случае фиксированного масштаба — прокрутка графика вниз;

  • Numpad 5 — восстановление автоматического масштаба графика по вертикали после его изменения. А при фиксированном масштабе — возвращение графика в пределы видимости;

  • Page Up — быстрая прокрутка графика влево;

  • Page Down — быстрая прокрутка графика вправо;

  • Home — переместить график в начало;

  • End — переместить график в конец;

  • "-" — уменьшить масштаб графика;

  • "+" — увеличить масштаб графика;

  • Delete — удалить все выделенные графические объекты;

  • Backspace — удалить в окне графика объекты, нанесенные последними;

  • Enter — открыть/закрыть окно быстрой навигации;

  • Esc — закрыть диалоговые окна;

  • F1 — открыть данное "Руководство пользователя";

  • F2 — открыть окно "Архив котировок";

  • F3 — открыть окно "Глобальные переменные";

  • F4 — загрузить редактор советников MetaEditor;

  • F6 — вызвать окно "Тестер" для тестирования советника, прикрепленного к окну графика;

  • F7 — вызвать окно со свойствами советника, прикрепленного к окну графика, для изменения настроек;

  • F8 — вызвать окно настройки графика;

  • F9 — вызвать окно "Новый ордер";

  • F10 — открыть "Окно котировок";

  • F11 — включить/выключить полноэкранный режим;

  • F12 — сдвинуть график на один бар влево;

  • Shift+F12 — сдвинуть график на один бар вправо;

  • Shift+F5 — переключить на предыдущий профиль;

  • Alt+1 — представить график в виде последовательности баров (преобразовать в столбиковый);

  • Alt+2 — представить график в виде последовательности японских свечей (преобразовать в свечной);

  • Alt+3 — представить график в виде ломаной линии (преобразовать в линейный);

  • Alt+A — скопировать в буфер обмена все результаты тестирования или оптимизации советника;

  • Alt+W — вызвать окно управления графиками;

  • Alt+F4 — закрыть клиентский терминал;

  • Alt+Backspace или Ctrl+Z — отменить удаление объекта;

  • Ctrl+A — установить высоту всех окон индикаторов по умолчанию;

  • Ctrl+B — вызвать окно "Список объектов";

  • Ctrl+C или Ctrl+Insert — копировать в буфер;

  • Ctrl+E — разрешить/запретить использование советника;

  • Ctrl+F — включить "Перекрестие";

  • Ctrl+G — показать/скрыть сетку;

  • Ctrl+H — показать/скрыть строку OHLC;

  • Ctrl+I — вызвать окно "Список индикаторов";

  • Ctrl+L — показать/скрыть объемы;

  • Ctrl+P — печать графика;

  • Ctrl+S — сохранить график в файле с расширениями "CSV", "PRN", "HTM";

  • Ctrl+W или Ctrl+F4 — закрыть окно графика;

  • Ctrl+Y— показать/скрыть разделители периодов;

  • Ctrl+Z или Alt+Backspace — отменить удаление объекта;

  • Ctrl+D — открыть/закрыть "Окно данных";

  • Ctrl+M — открыть/закрыть окно "Обзор рынка";

  • Ctrl+N — открыть/закрыть окно "Навигатор";

  • Ctrl+O — открыть окно "Настройки";

  • Ctrl+R — открыть/закрыть окно "Тестер";

  • Ctrl+T — открыть/закрыть окно "Терминал";

  • Ctrl+F5 — переключить на следующий профиль;

  • Ctrl+F6 — активизировать следующее окно графика;

  • Ctrl+F9 — открыть окно "Терминал — Торговля" и переключить в него фокус управления. После этого можно управлять торговой деятельностью при помощи клавиатуры.

Существует возможность назначать горячие клавиши для вызова любого элемента окна "Навигатор", за исключением элементов группы "Счета". Чтобы назначить сочетание клавиш элементу, необходимо выполнить команду "Назначить горячуюю клавишу" его контекстного меню. Назначенные горячие клавиши имеют больший приоритет по сравнению с предопределенными. Например, изначально сочетанию Ctrl+O соответствует вызов окна настройки терминала. Если этому же сочетанию назначить вызов индикатора On Balance Volume, то нажатием Ctrl+O нельзя будет вызвать окно настройки терминала.

 
Vinin:

Горячие клавиши

Горячими клавишами (клавишами-акселераторами) называются клавиши и комбинации клавиш, позволяющие быстро выполнять различные команды без обращения к меню или панелям управления.


Я не точно выразился. Вопрос - можно ли сделать так, чтобы скрипт вызывался из панели "Графические инструменты" кликом мышки на иконку (например иконку Fibo)?
Причина обращения: