Spread trading in Meta Trader - pagina 142

 

Amici !!!! Ho deciso di darmi un'altra botta e scrivere un EA basato su ordini limite e sarò felice di qualsiasi aiuto. Ho già aperto ordini Limit basati sulle funzioni di Kim. Attualmente sto cercando di ottenere la media e le deviazioni basate su statistiche di tick(https://www.mql5.com/ru/forum/125272)(poiché penso che siano più affidabili) per le posizioni aperte. Dovremo implementare un modulo per spostare gli ordini limite dietro il prezzo e un modulo per chiudere le posizioni quando il profitto raggiunge un certo punto.

 
Scorp1978 >>:

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

Ecco il codice per spostare gli ordini. La birra la offrite voi!

extern bool    Modify =True;
extern int     DistanceSet=14;//в пунктах
//-----------------------------------

if (Modify == true) {//если выключатель модификации включен
//если есть отложенный ордер и нет откр. одноименных позиций и
// расстояние от текущей цены превышает величину DistanceSet - модернизируем
// - т.е. подтягиваем к текущей цене
if(NumberOfOrders(NULL,OP_BUYLIMIT,Magic)>0 &&  NumberOfPositions(NULL,OP_BUY,Magic)<1){
  if( ExistOPNearMarket(NULL,OP_BUYLIMIT,Magic,DistanceSet)==0 ) { 
    for (int isl_= OrdersTotal()-1; isl_>=0; isl_-- )                  {
    if(OrderSelect(isl_,SELECT_BY_POS,MODE_TRADES))                 {
     if(OrderSymbol()==Symbol() )                                   {
      if(OrderType()==OP_BUYLIMIT && OrderMagicNumber()==Magic)      { 
      double pAsk=Ask-DistanceSet*Point;            
      if (sl!=0) double ldStop=pAsk-sl*Point;
      if (tp!=0) double ldTake=pAsk+tp*Point;         
     OrderModify(OrderTicket(), pAsk,ldStop,ldTake, 0, DarkGreen);
      Print("Modify OP_BUYLIMIT ");  Sleep(500);  RefreshRates(); }
      }}}}}
if(NumberOfOrders(NULL,OP_SELLLIMIT,Magic)>0 && NumberOfPositions(NULL,OP_SELL,Magic)<1){      
  if( ExistOPNearMarket(NULL,OP_SELLLIMIT,Magic,DistanceSet)==0 ) { 
   for (int isl= OrdersTotal()-1; isl>=0; isl-- )                  {
    if(OrderSelect(isl,SELECT_BY_POS,MODE_TRADES))                 {
     if(OrderSymbol()==Symbol() )                                   {
      if(OrderType()==OP_SELLLIMIT && OrderMagicNumber()==Magic)      { 
       double pBid=Bid+DistanceSet*Point;  
       if (sl!=0) double ldStop_=pBid+sl*Point;
       if (tp!=0) double ldTake_=pBid-tp*Point; 
     OrderModify(OrderTicket(), Bid+DistanceSet*Point,ldStop_,ldTake_, 0, DarkGreen);
      Print("Modify OP_SELLLIMIT");  Sleep(500);  RefreshRates(); }
      }}}}}            
}//выключатель модификации 
Dove, - Funzione ExistOPNearMarket()
/Questa funzione restituisce un flag per l'esistenza di un ordine o di una posizione vicino al mercato
//(ad una determinata distanza in pip dal mercato). Una selezione più accurata di ordini o posizioni da controllare
Gli ordini o le posizioni da //controllare sono impostati da parametri esterni:
//sy - Nome dello strumento. Se questo parametro è impostato, la funzione verifica
controlla gli //ordini o le posizioni solo del simbolo specificato. "" o NULL significa
//simbolo corrente.
//op - operazione di trading, ordine o tipo di posizione. Valori validi: OP_BUY,
// OP_SELL, OP_BUYLIMIT, OP_SELLLIMIT, OP_BUYSTOP, OP_SELLSTOP o -1.
//Il valore predefinito di -1 significa qualsiasi operazione commerciale.
//mn - Identificatore dell'ordine o della posizione (MagicNumber). Valore predefinito -1
// - qualsiasi identificatore.
//ds - Distanza dal mercato in pip. Il valore predefinito è 1000000.
//+----------------------------------------------------------------------------+
//| Автор : Ким Игорь                                                                |
//+----------------------------------------------------------------------------+
//| Версия : 19.02.2008 |
//| Описание : Возвращает флаг существования позиции или ордера около рынка |
//+----------------------------------------------------------------------------+
//| Параметры: |
//| sy - наименование инструмента ("" или NULL - текущий символ) |
//| op - торговая операция ( -1 - любая операция) |
//| mn - MagicNumber ( -1 - любой магик) |
//| ds - расстояние в пунктах от рынка ( 1000000 - по умолчанию) |
//+----------------------------------------------------------------------------+
bool ExistOPNearMarket(string sy="", int op=-1, int mn=-1, int ds=1000000) {
  int i, k=OrdersTotal(), ot;
  if (sy=="" || sy=="0") sy=Symbol();
  double p=MarketInfo(sy, MODE_POINT);
  if (p==0) if (StringFind(sy, "JPY")<0) p=0.0001; else p=0.01;
  for (i=0; i<k; i++) {
  if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
  ot=OrderType();
  if ((OrderSymbol()==sy) && (op<0 || ot==op)) {
  if (mn<0 || OrderMagicNumber()==mn) {
  if (ot==OP_BUY || ot==OP_BUYLIMIT || ot==OP_BUYSTOP) {
  if (MathAbs(MarketInfo(sy, MODE_ASK)-OrderOpenPrice())<ds*p) return(True);
  }
  if (ot==OP_SELL || ot==OP_SELLLIMIT || ot==OP_SELLSTOP) {
  if (MathAbs(OrderOpenPrice()-MarketInfo(sy, MODE_BID))<ds*p) return(True);
  }}}}} return(False); }

E la funzione NumberOfOrders() -
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 28.11.2006                                                     |
//|  Описание : Возвращает количество ордеров.                                 |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любой ордер)                    |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int NumberOfOrders(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), ko=0, ot;

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if (ot>1 && ot<6) {
        if ((OrderSymbol()==sy || sy=="") && (op<0 || ot==op)) {
          if (mn<0 || OrderMagicNumber()==mn) ko++;
        }}}}  return(ko);}                        
 
rid


grazie mille, crunch mi ha dato la funzione per calcolare la media dei tick con qualsiasi periodo gli ho promesso anche una birra, dovrò fare scorta di una cassa in una volta sola :)))) Vorrei non essere così ubriaco di gioia io stesso!!!!!

 
Ho ricevuto una lettera oggi nella posta di mt4 B.
//-----------------------------
"Gentili clienti, vi informiamo che a partire dal 14 aprile 2010, l'azione corrispondente alla clausola 1.3.6. dell'Appendice, Accordo BT-08 avrà effetto.
1.3.6 Fissazione del bilancio.
1.3.6.1 Il processo di fissazione della bilancia commerciale sarà eseguito su base giornaliera, prima del processo di maturazione degli swap.
Questa procedura consiste nel calcolo automatico del risultato finanziario di tutte le transazioni eseguite e nel confrontarlo con il saldo attuale del conto di trading. Se c'è una discrepanza, il saldo del conto trading sarà corretto dell'importo della discrepanza.
A partire da questo momento, la procedura di fissaggio dell'equilibrio sarà eseguita quotidianamente.
In casodi discrepanze nel risultato finanziario sul conto di trading dopo questa procedura, è possibile contattare il dipartimento di supporto tecnico ....."
//------------------------------------------------
Non capisco cosa diavolo sia questo?
Qual è la differenza di importi? Da dove viene in teoria?
Di cosa stiamo parlando?
И - ".... il saldo del conto di trading sarà aggiustato" - come?

 

Ho paura di sbagliarmi, ma la clausola 1.3.6.1 dell'accordo BT-08 dà all'azienda un'altra possibilità di rosicchiare clienti.
Da dove possono provenire teoricamente le discrepanze?
Ci sono due possibilità.
La prima è che se i tuoi ordini sono stati eseguiti a prezzi non di mercato (sai, picchi e altri fallimenti) - la società deciderà il destino di tale otder e determinerà cosa è "prezzo non di mercato". Ma questo non succede spesso e non è così male.
La seconda opzione è più importante per il trader. Immaginiamo che al momento del fixing, l'azienda allarghi gli spread di trading. Significa che su tutte le vostre posizioni aperte il profitto totale diminuirà, e questa differenza sarà dedotta dal saldo. Questa procedura sarà fatta dalla società alla fine di ogni giorno di trading, e sarà come uno scambio nascosto... Nessun diavolo, nessun diavolo può impedire alla compagnia di farlo... è la padrona di casa del CFD...

Certo, tutti vorrebbero credere nell'integrità dell'azienda e che non imbroglierà così... il tempo lo dirà..., ma bisogna trovare da qualche parte i fondi per le cause all'estero e i costosi avvocati...

 
GEFEL >>:

.....
Второй вариант более важен для трейдера. Представим себе, что на момент фиксинга, компания будет раздвигать торговые спреды. Это значит, что по всем Вашим открытым позициям суммарный профит будет уменьшаться, и эта разница будет списываться с баланса... Такую процедуру компания будет проводить в конце каждого торгового дня, - и это будет похоже на скрытое свопирование........

Sto pensando.....
Gli spread si allargano abbastanza ogni giorno alla chiusura giornaliera della sessione (per quegli strumenti dove c'è una pausa tra le sessioni giornaliere, cioè quasi tutte le materie prime e i futures - per la nostra metodologia di trading).
Non è del tutto chiaro. In questa situazione, il patrimonio netto (fondi) diminuirebbe temporaneamente, ma non il saldo.
Le posizioni rimangono aperte e l'equilibrio non può cambiare in alcun modo.
E se questo spread "allargato" (quando si apre una nuova sessione) viene cancellato dal bilancio, è difficile da comprendere.
Devo salvare un DETTAGLIO ogni sera, e confrontarlo scrupolosamente con un "nuovo bilancio" al mattino...
A quanto pare sì.

 
Un amico ha posto la domanda al supporto tecnico.
Avrà una risposta.
http://www.procapital.ru/showthread.php?p=649145#post649145
 
rid писал(а) >>
Un conoscente ha posto la domanda al supporto tecnico.
Avrà una risposta.
>> http://www.procapital.ru/showthread.php?p=649145#post649145


Ho anche letto la risposta del supporto tecnico e capisco che non succederà nulla (si spera)

 

Saldo = fondi + profitti totali sulle posizioni aperte...

 

E questa frase nella risposta, evidenziata in rosso, non ti preoccupa ... Ancora una volta, gli scambi chiusi non saranno influenzati da questo, tutte le loro cifre rimarranno come sono. Viene controllato solo il saldo finale del conto.
Naturalmente, nessuno aveva intenzione di riparare le posizioni già chiuse. Questo sarebbe un furto con scasso. Ma potrebbero entrare in quelli aperti...
Non ho un vero e proprio in B ... e un po 'non mi interessa, ma si consiglia davvero di organizzare una riconciliazione della sera e mattina equilibrio ...