Regras de estrutura. Aprender a estruturar programas, explorar possibilidades, erros, soluções, etc. - página 16

 
Como seria de esperar, cada um tem a sua própria estrutura e compreensão de como as coisas devem ser. ))
 
tol64:
Como seria de esperar, cada um tem a sua própria estrutura e compreensão de como as coisas devem ser. ))
Exactamente, é por isso que proponho desistir deste argumento, pois de qualquer forma não chegaremos a nenhum consenso. Sugiro que voltemos a discutir os princípios gerais da programação de grandes projectos.
 
C-4:
Não, não e novamente não!!!!!!!!!!!!!!!! Por essa lógica, uma simples inversão de estratégia numa média móvel é também MM. Porquê, era +1 contrato e tornou-se -1.

:)

O meu colega tentou explicar-lhe como a EA pode ser convenientemente estruturada (os nomes dos módulos são convencionais, claro). Em vez de jogar com a terminologia (que não é importante), tente verificar esta divisão estrutural, que é bastante conveniente e produtiva.

Foto. As setas mostram o movimento de informação:


 
C-4:
Exactamente, por isso sugiro que deixemos de discutir sobre isto, porque de qualquer forma não chegaremos a um consenso. Sugiro que voltemos a discutir os princípios gerais da programação de grandes projectos.
Parece que um destes princípios está a ser discutido, quando aplicado a projectos comerciais (à lógica básica da sua criação).
 
MetaDriver:

...

Kartinko. As setas mostram o movimento de informação:

Essa é uma forma muito mais clara de ver os pensamentos. Tudo é claro, mesmo sem palavras. Caso contrário, estes infinitos blá-blá-blá são por vezes muito difíceis de digerir. )) E após o esquema, pode fazer perguntas de qualificação. Ainda não os tenho. ))

 
MetaDriver:

:)

O meu colega tentou explicar-lhe como a EA pode ser convenientemente estruturada (os nomes dos módulos são convencionais, claro). Em vez de jogar com a terminologia (que não é importante), tente verificar esta divisão estrutural, que é bastante conveniente e produtiva.

As setas mostram o movimento de informação:

Sim, estou a ver que sim. Apenas a complexidade não é dada em parte alguma, mas delegada no corrector de recomendações e no impulsionador do mercado. Ao abrigo deste esquema, o corrector tem de investigar a história comercial do TS e compreender para ele qual é o seu estado real. O impulsionador do mercado ainda tem de identificar correctamente a posição actual da estratégia e corrigi-la, e na compensação, isto não é fácil.
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Позиционирование графика
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Позиционирование графика
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Позиционирование графика - Документация по MQL5
 
tol64:

Essa é uma forma muito mais clara de pensar sobre as coisas. Tudo é claro, mesmo sem palavras. Caso contrário, estes blá-blá-blá-blá-blá são por vezes muito difíceis de digerir. )) E após o esquema, pode fazer perguntas de qualificação. Ainda não os tenho. ))

Aqui está a resposta se tem de fazer um desenho para compreender a tarefa :)

MetaDriver:

:)

O meu colega tentou explicar-lhe como a EA pode ser convenientemente estruturada (os nomes dos módulos são convencionais, claro). Em vez de jogar com a terminologia (que não é importante), tente ver esta divisão estrutural, que é bastante conveniente e eficiente.

As setas mostram o movimento de informação:


Onde está a rede de arrasto? Presumo que esteja no bloco MM, porque precisa de um forecaster direccional.

Ou ainda está no mercado? porque precisa da pose actual para arrasto.

Acrescentaria um indicador de volatilidade e mais um bloco para corrigir paragens de protecção, nomeadamente paragens de protecção porque (imho) a saída por TP ou SL é uma força maior para o TS normal.

 
Urain:

Esta é a resposta à necessidade de fazer um desenho para compreender a tarefa :)

Onde está a rede de arrasto? Penso que está no bloco MM, não está?

ou no mercado? Afinal, é necessária a posição actual para a rede de arrasto.

Acrescentaria um indicador de volatilidade e mais um bloco para corrigir paragens de protecção, exactamente de protecção porque (imho) a saída por TP ou SL é de força maior para um TS normal.

E depois mais alguns blocos e a estratégia começará a bater... Se logo no início houver questões absolutamente razoáveis em que bloco descrever uma parte da estratégia e qual na outra, então isso significa que o esquema não é inequívoco, e isto leva a que problemas conhecidos.
 

Agora que começámos a desenhar esquemas, aqui está o meu esquema melhorado. Espero que seja mais claro do que o anterior:

BENEFÍCIOS

  • Existem apenas dois módulos.
  • As ligações são claramente definidas e inequívocas.
  • Qualquer classe que descreva 4 métodos pode ser uma estratégia comercial
  • A descrição de todas as regras é sempre armazenada num único local: classe de estratégia comercial. Não há necessidade de procurar em todo o projecto por algum "módulo de volatilidade".
  • O número de estados estratégicos é uma constante. Sob nenhuma regra do TS, não pode ser maior. Não pode haver módulos adicionais e eles são simplesmente desnecessários
  • Todas as entidades comuns podem e devem ser descritas na classe de base de controlo*.

*Assim, a regra "Exit at the end of trading session", que é universal para todas as estratégias, pode ser descrita na classe base. Se esta regra for estabelecida, a classe base chamará o método de apoio para fechar a posição no final do dia, em vez de a chamar de novo. E a posição será encerrada na altura certa, mesmo que isto não esteja especificado nas regras da estratégia básica.
 
C-4:

Sim, estou a ver que sim. Apenas a complexidade não é dada em parte alguma, mas delegada no ajustador de recomendações e no impulsionador do mercado.

Tudo bem. O objectivo não era eliminar dificuldades objectivas, mas não criar novas dificuldades.


De acordo com este esquema, o ajustador deve investigar o histórico comercial do TS e compreender para ele, qual é o seu estado real.

Penso que já descobrimos que o TS não tem estado (memória). O corrector também não tem de escavar a história. Foi inserido no esquema propositadamente pelo vosso pedido - safo-me perfeitamente bem sem ele... ))


O impulsionador do mercado ainda tem de identificar correctamente a actual posição estratégica e ajustá-la, e na compensação, isso não é fácil.

:)

Tenho de acreditar na vossa palavra?

double CMarketDriver::GetCurrentPos(string Sym)
  {
   if(!PosInfo.Select(Sym)) return 0; // DBL_MIN;
   double v=PosInfo.Volume();
   return(PosInfo.PositionType()==POSITION_TYPE_SELL) ? -v : v;
  }
bool CMarketDriver::Synhronize(const SymbolPos  &sp,int  &Err)
  {
   Err=0;
   bool res=true;
     {
      SymInfo.Name(sp.Sym);
      SymInfo.Refresh();
      double fp= TranslateLots(sp.Pos);  // Приводит рекомендованную в процентах от депо позу к рыночным лотам для данного инструмента
      double cp=GetCurrentPos(sp.Sym);
      double pos=fp-cp;   // вычисляет разницу текущей и рекомендованной позы
      if(pos>0.000001)
         res=Trade.Buy(NolrmalizeLots(pos),sp.Sym);  // "обналичивает разницу"
      if(pos<-0.000001)
         res=Trade.Sell(NolrmalizeLots(pos),sp.Sym);  // "обналичивает разницу"   
     }
   return res;
  }