Divulgação do comércio no Meta Trader - página 142

 

Amigos !!!! Decidi dar a mim mesmo outra lomba e escrever um EA baseado em ordens de limite e ficarei feliz por qualquer ajuda. Já abri ordens limitadas com base nas funções da Kim. Atualmente, estou tentando obter a média e os desvios com base nas estatísticas do tick(https://www.mql5.com/ru/forum/125272) (já que acho que são mais confiáveis) para abrir posições. Teremos que implementar um módulo para mover ordens de limite atrás do preço e um módulo para fechar posições quando o lucro atingir um determinado ponto.

 
Scorp1978 >>:

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

Aqui está o código para movimentar as ordens. A cerveja é por sua conta!

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(); }
      }}}}}            
}//выключатель модификации 
Onde, - Função Existente no mercadoOPNearMarket()
// Esta função retorna uma bandeira para a existência de uma ordem ou uma posição próxima ao mercado
//(a uma distância especificada em pips do mercado). Uma seleção mais precisa de ordens ou posições a serem verificadas
As ordens ou posições a serem //checked são definidas por parâmetros externos:
//sy - Nome do instrumento. Se este parâmetro for definido, a função irá verificar
verificar a //ordens ou posições somente do símbolo especificado. "" ou NULL significa
//símbolo atual.
//op - Operação comercial, ordem ou tipo de posição. Valores válidos: OP_BUY,
// OP_SELL, OP_BUYLIMIT, OP_SELLLIMIT, OP_BUYSTOP, OP_SELLSTOP ou -1.
// O valor padrão de -1 significa qualquer operação comercial.
//mn - Identificador de ordem ou posição (MagicNumber). Valor padrão -1
// - qualquer identificador.
//ds - Distância do mercado em pips. O valor padrão é 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 a função 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


muito obrigado, crunch me deu a função de calcular a média de carrapatos com qualquer período que eu lhe prometi uma cerveja também, terei que encher uma caixa de uma só vez :)))) Eu mesmo gostaria de não estar muito bêbado de alegria!!!!!

 
Recebi hoje uma carta no correio mt4 B.
//-----------------------------
"Prezados Clientes, favor notar que a partir de 14 de abril de 2010, a ação correspondente à cláusula 1.3.6. do Anexo, Acordo BT-08 entrará em vigor.
1.3.6 Fixação do Balanço.
1.3.6.1 O processo de fixação do saldo comercial deve ser realizado diariamente, antes do processo de acumulação de swap.
Este procedimento consiste no cálculo automático do resultado financeiro de todas as operações realizadas e na comparação com o saldo atual da conta de negociação. Se houver uma discrepância, o saldo da conta de negociação será corrigido pelo valor da discrepância.
A partir deste momento, o procedimento de fixação do equilíbrio será realizado diariamente.
Em caso dediscrepâncias no resultado financeiro da conta comercial após este procedimento, você pode entrar em contato com o departamento de suporte técnico ....."
//
Não consigo entender que diabos é isso?
Qual é a diferença em valores? De onde vem em teoria?
Do que estamos falando aqui?
И - ".... o saldo da conta de negociação será ajustado" - como?

 

Tenho medo de estar errado, mas a cláusula 1.3.6.1 do acordo BT-08 dá à empresa outra oportunidade de mordiscar os clientes.
De onde podem vir teoricamente as discrepâncias?
Há duas possibilidades.
A primeira é que se suas ordens foram executadas a preços não de mercado (você sabe, picos e outras falhas) - a empresa decidirá o destino de tal otder e determinará o que é "preço não de mercado". Mas isto não acontece com muita freqüência e não é tão ruim assim.
A segunda opção é mais importante para o comerciante. Imaginemos que, no momento da fixação, a empresa ampliará a margem de comercialização. Isso significa que em todas as suas posições abertas o lucro total diminuirá, e essa diferença será deduzida do saldo. Este procedimento será feito pela empresa ao final de cada dia de negociação, e será como uma troca oculta... Nenhum diabo, nenhum diabo pode impedir a empresa de fazer isso... ela é a anfitriã do CFD...

É claro que todos gostariam de acreditar na integridade da empresa e que ela não vai trapacear assim... o tempo dirá..., mas é preciso encontrar um lugar para levantar fundos para litígios no exterior e advogados caros...

 
GEFEL >>:

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

Estou pensando.....
Os spreads se alargam bastante a cada dia no encerramento diário da sessão (para aqueles instrumentos onde há uma pausa entre as sessões diárias, ou seja, quase todas as commodities e futuros - para nossa metodologia de negociação).
Não é muito claro. Nesta situação, o patrimônio (fundos) diminuiria temporariamente, mas não o saldo.
As posições permanecem abertas e o saldo não pode mudar de forma alguma.
E se esta propagação "ampliada" (quando uma nova sessão é aberta) for anulada, é difícil de compreender.
Tenho que salvar uma DECLARAÇÃO DETALHADO todas as noites e compará-la escrupulosamente com um "novo equilíbrio" pela manhã ...
Aparentemente, sim.

 
Um amigo fez a pergunta ao suporte técnico.
Terá uma resposta.
http://www.procapital.ru/showthread.php?p=649145#post649145
 
rid писал(а) >>
Um conhecido colocou a questão ao suporte técnico.
Terá uma resposta.
>> http://www.procapital.ru/showthread.php?p=649145#post649145


Eu também li a resposta do suporte técnico e entendo que nada acontecerá (espero)

 

Saldo = fundos + lucros totais em posições abertas...

 

E esta frase na resposta, destacada em vermelho, não o incomoda ... Mais uma vez, os negócios fechados não serão afetados por isto, todos os seus números permanecerão como estão. Apenas o saldo final da conta é verificado.
Naturalmente, ninguém iria consertar as posiçõesfechadas. Isto seria um assalto. Mas eles poderiam entrar nas abertas...
Eu não tenho um real em B ... e eu meio que não me importo, mas você realmente aconselha a organizar uma reconciliação entre o equilíbrio da noite e da manhã ...