Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Il codice qui sotto funziona perfettamente dopo che mi hai aiutato, grazie amico.
E ho rinominato come hai detto tu, funziona bene, ma mi sto solo chiedendo, sto facendo qualcosa di sbagliato?
(sono solo preoccupato)
Preoccuparsi se il tuo codice funzionerà è molto normale (anzi è salutare). Spesso vedremo del codice che si compila ma non fa quello che vogliamo (a causa dell'errore umano e/o della mancanza di conoscenza).
Il modo migliore è prendere l'abitudine di stampare le variabili e controllare i codici di ritorno. Una volta che avete testato, potete rimuovere le dichiarazioni di stampa.
Usando il vostro frammento di codice qui sopra, potreste aggiungere una semplice Print("SL value: "+sl) e poi controllare il vostro Expert log per vedere se i valori sono quelli che vi aspettate.
È semplice, se funziona come progettato non stai facendo nulla di sbagliato, altrimenti semplicemente non funziona.
#Checkmark - Chiuso
Si! Accetto che questa etichetta bitmap abbia già richiesto molto tempo da parte mia. Finalmente ho ottenuto quello che voglio...
Certo, enorme uomo, grazie per il tuo aiuto.
Risolvo il mio problema come il codice qui sotto.
{
// 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;
}
Il modo migliore è prendere l'abitudine di stampare le variabili e controllare i codici di ritorno. Una volta che avete testato, potete rimuovere le istruzioni di stampa.
Usando il vostro snippet di codice sopra, potreste aggiungere una semplice Print("SL value: "+sl) e poi controllare il vostro Expert log per vedere se i valori sono quelli che vi aspettate.
Lo uso già, ma a volte dubito del mio codice perché se controlli il mioproblema#Checkmark , spero che mi capirai più chiaramente.
Comunque grazie per il tuo tempo.
Perché stai moltiplicando per 10? Se lo stoploss è in pip, convertilo tramite pips_to_change in modo che funzioni su broker a 4 cifre.
Oh! Sì amico, buona domanda, ho già cambiato. Grazie per l'attenzione.
#Stop Loss /Take Profit- Chiuso.
Grazie per i tuoi commenti più chiari Marco.
Un ringraziamento speciale a @Marco vd HeijdenTutto il meglio per te.
#Ctrl + pulsante del mouse - Apri.
Ho trascorso alcune ore, come posso trovare una buona documentazione su questo, e non posso ottenere alcuna buona informazione e documentazione per questo.
Ho solo bisogno che quando clicco'Left Mouse + Ctrl' la dimensione del lotto aumenti di 0.1. (normalmente è aumentato di 0.01 ).
Voglio trovare documentazione e articoli con esempi su questo.
Grazie in anticipo.
#Ctrl + pulsante del mouse - Apri.
Ho trascorso alcune ore, come posso trovare una buona documentazione su questo, e non posso ottenere alcuna buona informazione e documentazione per questo.
Ho solo bisogno che quando clicco'Left Mouse + Ctrl' la dimensione del lotto aumenti di 0.1. (normalmente aumenta di 0.01 ).
Voglio trovare documentazione e articoli con esempi su questo.
Grazie in anticipo.
Non conosco un modo semplice per intrappolare le combinazioni di tasti. Sarebbe meglio avere un secondo pulsante da cliccare se si vuole aumentare di 0,1 piuttosto che di 0,01.
Ciononostante, puoi provare quanto segue:
Controllate se l'ultimo evento era una pressione del tasto CTRL.
Se lo era, controllate se questo evento è un clic del mouse.
Ma ci sono alcuni problemi con questo approccio:
1. Se qualsiasi altro evento del grafico accade tra la pressione del tasto e il clic del mouse, fallisce.
2. Si otterrà un po' di overrun causato dal ritardo tra il clic del mouse e il rilascio di CTRL. I workaround per questo introdurranno i loro propri problemi.
Forse altre persone avranno idee migliori.
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
}
}
//+------------------------------------------------------------------+
Credo di sì.
È leggermente diverso però.