Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Нижеприведенный код отлично работает после того, как вы мне помогли, спасибо.
И я переименовал, как вы сказали, он работает хорошо, но мне просто интересно, делаю ли я что-то неправильно?
(просто я беспокоюсь)
Беспокоиться о том, будет ли работать ваш код, очень нормально (более того, это полезно). Часто мы видим код, который компилируется, но не делает того, что мы хотим (из-за человеческой ошибки и/или недостатка знаний).
Лучший способ - взять в привычку распечатывать переменные и проверять коды возврата. После проверки можно убрать операторы печати.
Используя ваш фрагмент кода выше, вы можете добавить простое Print("Значение SL: "+sl), а затем проверить журнал Expert, чтобы убедиться, что значения соответствуют вашим ожиданиям.
Все просто, если он работает, как задумано, вы не делаете ничего плохого, иначе он просто не работает.
#Checkmark - Закрыто
Да! Я принимаю этот растровый ярлык уже занял много времени от меня. Наконец, я получил то, что хотел...
Конечно, огромный человек, спасибо за помощь.
Я решил свою проблему следующим образом.
{
// Sell set Stop Loss with bitmap label
// when bitmap label shows - ON
if ( ObjectGetInteger( 0, "bitmap label on off", OBJPROP_STATE ) == true )
{
sl = Bid + points_to_change( stoploss * 10 );
Print( " | TRUE : Active | ", "Bid: ", Bid, " | ", "Stop Loss: ", sl );
}
// when bitmap label shows - OFF
if ( ObjectGetInteger( 0, "bitmap label on off", OBJPROP_STATE ) == false )
{
sl = 0;
Print( " | FALSE : Inactive | ", "Bid: ", Bid, " | ", "Stop Loss: ", sl );
}
// call your stop loss 'sl'
ticket = OrderSend( ..., sl, ... );
// sounds
if ( ticket > 0 )
{ PlaySound( "ok.wav" ); } else
{ PlaySound( "timeout.wav" ); }
return;
}
Лучший способ - выработать привычку печатать переменные и проверять коды возврата. После проверки можно убрать операторы печати.
Используя ваш фрагмент кода выше, вы можете добавить простой Print("Значение SL: "+sl), а затем проверить журнал Expert, чтобы убедиться, что значения соответствуют вашим ожиданиям.
Я уже использую это, но иногда я сомневаюсь в своем коде, потому что если вы проверите мойвопрос#Checkmark , я надеюсь, вы поймете меня более ясно.
Влюбом случае спасибо за ваше время.
Почему вы умножаете на 10? Если стоплосс в пунктах, конвертируйте его через pips_to_change, чтобы он работал на 4-значных брокерах.
О! Да, хороший вопрос, я уже изменил. Спасибо за внимание.
#Stop Loss /Take Profit- закрыто
Спасибо за ваши более четкие комментарии Марко.
Особая благодарность @Marco vd HeijdenВсего вам наилучшего.
#Ctrl + кнопка мыши - Открыть
Я потратил несколько часов, как я могу найти хорошую документацию об этом, и я не могу получить никакой хорошей информации и документации для этого.
Мне просто нужно, чтобы при нажатии'Left Mouse + Ctrl' размер лота увеличивался на 0.1. (обычно он увеличивается на 0.01 ).
Я хочу найти документацию и статьи с примерами об этом.
Заранее спасибо.
#Ctrl + кнопка мыши - Открыть
Я потратил несколько часов, как я могу найти хорошую документацию об этом, и я не могу получить никакой хорошей информации и документации для этого.
Мне просто нужно, чтобы при нажатии'Left Mouse + Ctrl' размер лота увеличивался на 0.1. (обычно он увеличивается на 0.01 ).
Я хочу найти документацию и статьи с примерами об этом.
Заранее спасибо.
Я не знаю простого способа отлавливать комбинации клавиш. Было бы лучше иметь вторую кнопку для нажатия, если вы хотите увеличить на 0.1, а не на 0.01.
Тем не менее, вы можете попробовать следующее:
Проверьте, было ли последним событием нажатие клавиши CTRL.
Если да, то проверьте, является ли это событие щелчком мыши.
Но при таком подходе есть некоторые проблемы:
1. Если между нажатием клавиши и щелчком мыши произойдет любое другое событие графика, этот метод не сработает.
2. Вы получите некоторое превышение, вызванное задержкой между щелчком мыши и отпусканием CTRL. Обходные пути для этого создадут свои собственные проблемы.
Возможно, у других людей появятся идеи получше.
const long &lparam,
const double &dparam,
const string &sparam)
{
static bool wasCTRL=false;
if(wasCTRL && id==CHARTEVENT_CLICK) Print("CTRL+CLICK detected");
wasCTRL=(id==CHARTEVENT_KEYDOWN && lparam==CTRL);
}
//| keydown.mq4 |
//| Copyright 2016, Marco vd Heijden, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, Marco vd Heijden, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
bool ctrl_click;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- create timer
EventSetTimer(60);
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- destroy timer
EventKillTimer();
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
}
//+------------------------------------------------------------------+
//| Timer function |
//+------------------------------------------------------------------+
void OnTimer()
{
//---
}
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
if(id==CHARTEVENT_CLICK)
{
//Print("CLICK");
ctrl_click=1;
}
if(id==CHARTEVENT_KEYDOWN)
{
//Print(lparam);// print to identify keycode
if(lparam==17) // ctrl key
{
if(ctrl_click==1)// if mouse click
{
//Do Something when CTRL (keycode 17) is pressed
Print("CTRL+CLICK");
ctrl_click=0; // reset
}
}
ctrl_click=0; // reset if not ctrl
}
}
//+------------------------------------------------------------------+
Думаю, да.
Это немного другое.