duplo Mas [Preço] [OT]; //arranjo para colocar em ordem todos os pedidos
ou
for(int i=1; i<=OrdensTotal(); i++) //lote de ordem
{
se (OrderSelect(i-1,SELECT_BY_POS)==verdadeiro) // se houver um
{
duplo Preço=Preço de Encomenda Aberto(); // Preço do pedido selecionado
duplo Mas [Preço]; //array para organizar todos os pedidos por preço?
OrdensTotal retorna o número total de ordens, mas elas são numeradas a partir de zero. É por isso que o laço deve ser i < OrderTotal()
2. A matriz deve ser declarada com duplo Mas[];. Se o pedido for selecionado com sucesso, o tamanho da matriz deve ser aumentado, pois não sabemos quantos pedidos há no total.
3. O índice de cordas da matriz deve estar entre parênteses rectos. Mas[i] = Preço;
1. ordensTotal retorna o número total de ordens, mas elas são numeradas a partir de zero. É por isso que o laço deve ser i < OrderTotal()
2. A matriz deve ser declarada com duplo Mas[];. Se um pedido for escolhido com sucesso, o tamanho da matriz deve ser aumentado, pois não sabemos quantos deles existem...
3. O índice de cordas da matriz deve estar entre parênteses rectos. Mas[i] = Preço;
1. ordensTotal retorna o número total de ordens, mas elas são numeradas a partir de zero. Portanto, o laço deve ser i < OrderTotal()
2. A matriz deve ser declarada com duplo Mas[];. Se um pedido for escolhido com sucesso, o tamanho da matriz deve ser aumentado, pois não sabemos quantos deles existem...
3. O índice de cordas da matriz deve estar entre parênteses rectos. Mas[i] = Preço;
Como resultado, os dois estão errados.
Vamos obter uma matriz unidimensional de preços de pedido neste caso?
À tarde, há uma linha para selecionar o lucro em moeda. Eu quero 1) ter a escolha nos ajustes da EA de um lucro fixo (como já é) ou uma parte do depósito como uma porcentagem. Por favor, informe como fazer isso.
O fio original é este:
Duplo lucro externo =10;
2) ativar a contagem automática do lucro, desativada pelo dígito selecionado do saldo da conta.
Resumindo:
Lucro: fixo/autocontável.
Fixar - montante.
Autorate - porcentagem de equilíbrio.
Ligue o autorun - lucro %.
Desativar autorun - lucro/perda em %.
Selecione o valor a partir do qual o lucro/perda da conta automática será contabilizado
Hi. Você pode me dizer como se livrar do fechamento e abertura de uma ordem pendente em cada bar? Preciso que abra e aguarde a ordem correspondente para abrir.
//+------------------------------------------------------------------+//| e-News-Lucky$.mq4 |//| Lucky$ & KimIV |//| http://www.kimiv.ru |//| |//| 24.10.2005 |//| Выставление ордеров в определённое время на пробой диапазона. |//| Если ни один ордер не сработал, то модификация на каждом баре. |//+------------------------------------------------------------------+#property copyright"Lucky$ & KimIV"#property link"http://www.kimiv.ru"#define MAGIC 123//------- Внешние параметры советника --------------------------------externstring _Parameters_Trade = "----- Параметры торговли";
externdouble Lots = 0.01; // Размер торгуемого лотаexternint StopLoss = 0; // Размер фиксированного стопаexternint TakeProfit = 0; // Размер фиксированного тэйкаexternstring TimeSetOrders = "10:30"; // Время установки ордеровexternstring TimeDelOrders = "22:30"; // Время удаления ордеровexternstring TimeClosePos = "22:30"; // Время закрытия позицийexternint DistanceSet = 200; // Расстояние от рынкаexternbool UseTrailing = True; // Использовать тралexternbool ProfitTrailing = True; // Тралить только профитexternint TrailingStop = 25; // Фиксированный размер тралаexternint TrailingStep = 5; // Шаг тралаexternint Slippage = 3; // Проскальзывание ценыexternstring _Parameters_Expert = "----- Параметры советника";
externstring Name_Expert = "e-News-Lucky$";
externbool UseSound = True; // Использовать звуковой сигналexternstring NameFileSound = "expert.wav"; // Наименование звукового файлаexterncolor clOpenBuy = LightBlue; // Цвет открытия покупкиexterncolor clOpenSell = LightCoral; // Цвет открытия продажиexterncolor clModifyBuy = Aqua; // Цвет модификации покупкиexterncolor clModifySell = Tomato; // Цвет модификации продажиexterncolor clCloseBuy = Blue; // Цвет закрытия покупкиexterncolor clCloseSell = Red; // Цвет закрытия продажи//---- Глобальные переменные советника -------------------------------int prevBar;
//+------------------------------------------------------------------+//| expert deinitialization function |//+------------------------------------------------------------------+void deinit() {
Comment("");
}
//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+void start() {
if (TimeToStr(CurTime(), TIME_MINUTES)==TimeSetOrders) SetOrders();
if (prevBar!=Bars && ExistOrder(1) && ExistOrder(2)) ModifyOrders();
DeleteOppositeOrders();
TrailingPositions();
if (TimeToStr(CurTime(), TIME_DATE)==TimeDelOrders) DeleteAllOrders();
if (TimeToStr(CurTime(), TIME_MINUTES)==TimeClosePos) CloseAllPositions();
prevBar=Bars;
}
//+------------------------------------------------------------------+//| Установка ордеров |//+------------------------------------------------------------------+void SetOrders() {
double ldStop=0, ldTake=0;
int spr=MarketInfo(Symbol(), MODE_SPREAD);
double pAsk=Ask+(DistanceSet+spr)*Point;
double pBid=Bid-DistanceSet*Point;
if (!ExistOrder(1)) {
if (StopLoss!=0) ldStop=pAsk-StopLoss*Point;
if (TakeProfit!=0) ldTake=pAsk+TakeProfit*Point;
SetOrder(OP_BUYSTOP, pAsk, ldStop, ldTake, 1);
}
if (!ExistOrder(2)) {
if (StopLoss!=0) ldStop=pBid+StopLoss*Point;
if (TakeProfit!=0) ldTake=pBid-TakeProfit*Point;
SetOrder(OP_SELLSTOP, pBid, ldStop, ldTake, 2);
}
}
//+------------------------------------------------------------------+//| Модификация ордеров |//+------------------------------------------------------------------+void ModifyOrders() {
bool ret;
double ldStop=0, ldTake=0;
int spr=MarketInfo(Symbol(), MODE_SPREAD);
double pAsk=Ask+(DistanceSet+spr)*Point;
double pBid=Bid-DistanceSet*Point;
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC+1) {
if (StopLoss!=0) ldStop=pAsk-StopLoss*Point;
if (TakeProfit!=0) ldTake=pAsk+TakeProfit*Point;
ret=OrderModify(OrderTicket(), pAsk, ldStop, ldTake, 0, clModifyBuy);
}
if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC+2) {
if (StopLoss!=0) ldStop=pBid+StopLoss*Point;
if (TakeProfit!=0) ldTake=pBid-TakeProfit*Point;
ret=OrderModify(OrderTicket(), pBid, ldStop, ldTake, 0, clModifySell);
}
}
}
}
//+------------------------------------------------------------------+//| Возвращает флаг существования ордера или позиции по номеру |//+------------------------------------------------------------------+bool ExistOrder(int mn) {
bool Exist=False;
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC+mn) {
Exist=True; break;
}
}
}
return(Exist);
}
//+------------------------------------------------------------------+//| Возвращает флаг существования позиции по номеру |//+------------------------------------------------------------------+bool ExistPosition(int mn) {
bool Exist=False;
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC+mn) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
Exist=True; break;
}
}
}
}
return(Exist);
}
//+------------------------------------------------------------------+//| Установка ордера |//| Параметры: |//| op - операция |//| pp - цена |//| ldStop - уровень стоп |//| ldTake - уровень тейк |//| mn - добавить к MAGIC |//+------------------------------------------------------------------+void SetOrder(int op, double pp, double ldStop, double ldTake, int mn) {
bool ret;
color clOpen;
string lsComm=GetCommentForOrder();
if (op==OP_BUYSTOP) clOpen=clOpenBuy;
else clOpen=clOpenSell;
ret=OrderSend(Symbol(),op,Lots,pp,Slippage,ldStop,ldTake,lsComm,MAGIC+mn,0,clOpen);
if (UseSound) PlaySound(NameFileSound);
}
//+------------------------------------------------------------------+//| Генерирует и возвращает строку коментария для ордера или позиции |//+------------------------------------------------------------------+string GetCommentForOrder() {
return(Name_Expert);
}
//+------------------------------------------------------------------+//| Удаление всех ордеров |//+------------------------------------------------------------------+void DeleteAllOrders() {
bool fd;
for (int i=OrdersTotal()-1; i>=0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderMagicNumber()>MAGIC && OrderMagicNumber()<=MAGIC+2) {
if (OrderSymbol()==Symbol()) {
if (OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP) {
fd=OrderDelete(OrderTicket());
if (fd && UseSound) PlaySound(NameFileSound);
}
}
}
}
}
}
//+------------------------------------------------------------------+//| Закрытие всех позиций по рыночной цене |//+------------------------------------------------------------------+void CloseAllPositions() {
bool fc;
for (int i=OrdersTotal()-1; i>=0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderMagicNumber()>MAGIC && OrderMagicNumber()<=MAGIC+2) {
if (OrderSymbol()==Symbol()) {
fc=False;
if (OrderType()==OP_BUY) {
fc=OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, clCloseBuy);
}
if (OrderType()==OP_SELL) {
fc=OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, clCloseSell);
}
if (fc && UseSound) PlaySound(NameFileSound);
}
}
}
}
}
//+------------------------------------------------------------------+//| Удаление противоположных ордеров |//+------------------------------------------------------------------+void DeleteOppositeOrders() {
bool fd, fep1, fep2;
fep1=ExistPosition(1);
fep2=ExistPosition(2);
for (int i=OrdersTotal()-1; i>=0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==Symbol()) {
fd=False;
if (OrderType()==OP_BUYSTOP && OrderMagicNumber()==MAGIC+1) {
if (fep2) fd=OrderDelete(OrderTicket());
}
if (OrderType()==OP_SELLSTOP && OrderMagicNumber()==MAGIC+2) {
if (fep1) fd=OrderDelete(OrderTicket());
}
if (fd && UseSound) PlaySound(NameFileSound);
}
}
}
}
//+------------------------------------------------------------------+//| Сопровождение позиции простым тралом |//+------------------------------------------------------------------+void TrailingPositions() {
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderMagicNumber()>MAGIC && OrderMagicNumber()<=MAGIC+2) {
if (OrderSymbol()==Symbol()) {
if (OrderType()==OP_BUY) {
if (!ProfitTrailing || (Bid-OrderOpenPrice())>TrailingStop*Point) {
if (OrderStopLoss()<Bid-(TrailingStop+TrailingStep-1)*Point) {
ModifyStopLoss(Bid-TrailingStop*Point, clModifyBuy);
}
}
}
if (OrderType()==OP_SELL) {
if (!ProfitTrailing || OrderOpenPrice()-Ask>TrailingStop*Point) {
if (OrderStopLoss()>Ask+(TrailingStop+TrailingStep-1)*Point || OrderStopLoss()==0) {
ModifyStopLoss(Ask+TrailingStop*Point, clModifySell);
}
}
}
}
}
}
}
}
//+------------------------------------------------------------------+//| Перенос уровня StopLoss |//| Параметры: |//| ldStopLoss - уровень StopLoss |//| clModify - цвет модификации |//+------------------------------------------------------------------+void ModifyStopLoss(double ldStop, color clModify) {
bool fm;
double ldOpen=OrderOpenPrice();
double ldTake=OrderTakeProfit();
fm=OrderModify(OrderTicket(), ldOpen, ldStop, ldTake, 0, clModify);
if (fm && UseSound) PlaySound(NameFileSound);
}
//+------------------------------------------------------------------+
Olá. Alguém aqui usa indicadores do ClasterDelta em seu trabalho? Tenho uma pergunta sobre o uso automático dos dados do indicador VolumeProfile. O problema é que este indicador não retorna nada, mas apenas desenha um histograma de linhas de tendência. Mas ao colocar o cursor sobre esta linha, o valor do volume comercializado neste tick aparecerá. Como tirar esta informação do indicador!
Como encontrei antes de estudar as aulas, novamente há nuances que não estão descritas nos artigos ou em algum lugar tão escondidas que não é possível encontrar através de um mecanismo de busca. Um dia inteiro passado em vão à procura de explicações. Por exemplo, o que este símbolo significa e como ele afeta, caso contrário. Como visto abaixo no exemplo do stati, primeiro ele está lá e depois não está: &
// Для int. Проверка существования в массиве элемента с заданным значениемint Find(int& aArray[],int aValue)
{
for(int i=0; i<ArraySize(aArray); i++)
{
if(aArray[i]==aValue)
{
return(i); // Элемент существует, возвращаем индекс элемента
}
}
return(-1); // Нет такого элемента, возвращаем -1
}
Também este símbolo não é claro o que significa: ~
Isto é correto?
for(int i=1; i<=OrdensTotal(); i++) // Laço de encomenda
{
if(OrderSelect(i-1,SELECT_BY_POS)==verdadeiro) // se o seguinte
{
int OT=OrdensTotal; //o número de ordens em aberto no terminal
duplo Preço=Preço de Encomenda Aberto(); // Preço do pedido selecionado
duplo Mas [Preço] [OT]; //arranjo para colocar em ordem todos os pedidos
ou
for(int i=1; i<=OrdensTotal(); i++) //lote de ordem
{
se (OrderSelect(i-1,SELECT_BY_POS)==verdadeiro) // se houver um
{
duplo Preço=Preço de Encomenda Aberto(); // Preço do pedido selecionado
duplo Mas [Preço]; //array para organizar todos os pedidos por preço?
Isto é correto?
for(int i=1; i<=OrdensTotal(); i++) // Laço de encomenda
{
if(OrderSelect(i-1,SELECT_BY_POS)==verdadeiro) // se o seguinte
{
int OT=OrdensTotal; //o número de ordens em aberto no terminal
duplo Preço=Preço de Encomenda Aberto(); // Preço do pedido selecionado
duplo Mas [Preço] [OT]; //arranjo para colocar em ordem todos os pedidos
ou
for(int i=1; i<=OrdensTotal(); i++) //lote de ordem
{
se (OrderSelect(i-1,SELECT_BY_POS)==verdadeiro) // se houver um
{
duplo Preço=Preço de Encomenda Aberto(); // Preço do pedido selecionado
duplo Mas [Preço]; //array para organizar todos os pedidos por preço?
OrdensTotal retorna o número total de ordens, mas elas são numeradas a partir de zero. É por isso que o laço deve ser i < OrderTotal()
2. A matriz deve ser declarada com duplo Mas[];. Se o pedido for selecionado com sucesso, o tamanho da matriz deve ser aumentado, pois não sabemos quantos pedidos há no total.
3. O índice de cordas da matriz deve estar entre parênteses rectos. Mas[i] = Preço;
Como resultado, os dois estão errados.
1. ordensTotal retorna o número total de ordens, mas elas são numeradas a partir de zero. É por isso que o laço deve ser i < OrderTotal()
2. A matriz deve ser declarada com duplo Mas[];. Se um pedido for escolhido com sucesso, o tamanho da matriz deve ser aumentado, pois não sabemos quantos deles existem...
3. O índice de cordas da matriz deve estar entre parênteses rectos. Mas[i] = Preço;
Como resultado, os dois estão errados.
Muito obrigado!
1. ordensTotal retorna o número total de ordens, mas elas são numeradas a partir de zero. Portanto, o laço deve ser i < OrderTotal()
2. A matriz deve ser declarada com duplo Mas[];. Se um pedido for escolhido com sucesso, o tamanho da matriz deve ser aumentado, pois não sabemos quantos deles existem...
3. O índice de cordas da matriz deve estar entre parênteses rectos. Mas[i] = Preço;
Como resultado, os dois estão errados.
Vamos obter uma matriz unidimensional de preços de pedido neste caso?
duplo Preço=Preço de Encomenda Aberto(); // Preço do pedido selecionado
double Mas[i] = Preço; //arranjo para colocar em ordem todas as encomendas
for(int i=1; i<OrdersTotal();) // Laço de encomenda
{
if(OrderSelect(i-1,SELECT_BY_POS)==verdadeiro) // se houver um próximo
i++;
}
E, neste caso, será um conjunto unidimensional de preços de pedido?
duplo Preço=Preço de Encomenda Aberto(); // Preço do pedido selecionado
double Mas[i] = Preço; //arranjo para colocar em ordem todas as encomendas
for(int i=1; i<OrdersTotal();) // Laço de encomenda
{
if(OrderSelect(i-1,SELECT_BY_POS)==verdadeiro) // se houver um próximo
i++;
}
Selecionado ==verdadeiro não pode ser escrito.
Não. É mais ou menos assim.
O destacado ==verdadeiro pode não ser escrito.
Muito obrigado!
Hi. Você pode me dizer como se livrar do fechamento e abertura de uma ordem pendente em cada bar? Preciso que abra e aguarde a ordem correspondente para abrir.
Olá. Alguém aqui usa indicadores do ClasterDelta em seu trabalho? Tenho uma pergunta sobre o uso automático dos dados do indicador VolumeProfile. O problema é que este indicador não retorna nada, mas apenas desenha um histograma de linhas de tendência. Mas ao colocar o cursor sobre esta linha, o valor do volume comercializado neste tick aparecerá. Como tirar esta informação do indicador!
Alguma idéia?
Como encontrei antes de estudar as aulas, novamente há nuances que não estão descritas nos artigos ou em algum lugar tão escondidas que não é possível encontrar através de um mecanismo de busca. Um dia inteiro passado em vão à procura de explicações. Por exemplo, o que este símbolo significa e como ele afeta, caso contrário. Como visto abaixo no exemplo do stati, primeiro ele está lá e depois não está: &
Também este símbolo não é claro o que significa: ~
*