新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 257

 
又见面了!帮你解决这个琐事,因为我搞不清楚....

我想做以下事情!

当在价格上开了第一笔交易,例如1.23455,我想在价格上升到1.23415时开第二笔交易。

PHP代码。
double positionTPask=NormalizeDouble(Ask*Point,Digits);
double lastTPask1=NormalizeDouble(Ask-40*Point,Digits);

if (
RSI0<RSIDownLevel&&RSIDownLevel<=RSI1){
TP=NormalizeDouble(Ask+takeprofit*Point,Digits);
if (
OrderSend(Symbol(),OP_BUY,Lot,NormalizeDouble(Ask,Digits),slipage,0,TP,NULL,Magic)==-)Print(GetLastError();

if (
positionTPask1>lastTPask1){
if (
takeprofit!=0)TPm=NormalizeDouble(Ask+takeprofit*Point,Digits);
if (
OrderSend(Symbol(),OP_BUY,Lot,NormalizeDouble(Ask,Digits),slippage,0,TPm,NULL,Magic)==-1) Print(GetLastError();
}}
}
而我一次以一个价格开了2个订单......
这样做对吗? 看看...
 

sviter-pro:
Здраствуйте еще раз! Помогите с этой банальностью для вас, ато я разобраться не могу....

Хочу сделать следующее! 

Когда открывается первая сделка по цене к примеру 1.23455, то хочу что бы вторая сделка открывалась когда цена пойдет на 1.23415

double positionTPask = NormalizeDouble(Ask * Point, Digits);
double lastTPask1 = NormalizeDouble(Ask - 40 * Point, Digits);

if (RSI0 < RSIDownLevel && RSIDownLevel <= RSI1){
      TP  = NormalizeDouble(Ask + takeprofit * Point,Digits); 
      if (OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,0,TP,NULL,Magic)==-1) Print(GetLastError());
      
   if (positionTPask1 > lastTPask1){
      if (takeprofit!=0) TPm  = NormalizeDouble(Ask + takeprofit * Point, Digits); 
      if (OrderSend(Symbol(), OP_BUY, Lot, NormalizeDouble(Ask, Digits), slippage, 0, TPm, NULL, Magic)==-1) Print(GetLastError());
      }}  
而且我有2个订单同时开放,价格相同...

做得对吗? 你会看这个...

在第一行,我看到一件奇怪的事情。我没有再看下去。

是做什么用的?

double positionTPask = NormalizeDouble(Ask * Point, Digits);

在计算器上,用Ask乘以Point

我对如何正确粘贴代码 有一个非常好的想法。

 
sviter-pro:
又见面了!帮你解决这个琐事,因为我搞不清楚....

我想做以下事情!

当我的第一笔订单在1.23455开盘时,我希望我的第二笔订单在价格上涨到1.23415时开盘。

PHP代码。
double positionTPask=NormalizeDouble(Ask*Point,Digits);
double lastTPask1=NormalizeDouble(Ask-40*Point,Digits);

if (
RSI0<RSIDownLevel&&RSIDownLevel<=RSI1){
TP=NormalizeDouble(Ask+takeprofit*Point,Digits);
if (
OrderSend(Symbol(),OP_BUY,Lot,NormalizeDouble(Ask,Digits),slipage,0,TP,NULL,Magic)==-)Print(GetLastError();

if (
positionTPask1>lastTPask1){
if (
takeprofit!=0)TPm=NormalizeDouble(Ask+takeprofit*Point,Digits);
if (
OrderSend(Symbol(),OP_BUY,Lot,NormalizeDouble(Ask,Digits),slippage,0,TPm,NULL,Magic)==-1) Print(GetLastError();
}}
}
我以一个价格开了两个订单......。
这是否正确? 请检查...
你不应该从Ask-40*Point开始跳舞,而是从1个位置的开盘价-40*Point开始。
 

我没怎么用过指标,所以这可能是个简单的问题,我如何在数据窗口 中禁止显示图形缓冲区?我想删除缓冲区3和4,以下是代码。

#property strict
#property indicator_chart_window
#property indicator_buffers 4
#property  indicator_color1 Black
#property  indicator_color2 Yellow
#property  indicator_color3 Black
#property  indicator_color4 Black

//---- input parameters
input int RSIPeriod=14;
input int Levl=50;
input ENUM_TIMEFRAMES TF=PERIOD_CURRENT;
//---- buffers
double RSIBuffer[];
double MABuffer[];
double PosBuffer[];
double NegBuffer[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   string short_name;
//---- 2 additional buffers are used for counting.
   IndicatorBuffers(4);
   SetIndexBuffer(0,RSIBuffer);
   SetIndexBuffer(1,MABuffer);
   SetIndexBuffer(2,PosBuffer);
   SetIndexBuffer(3,NegBuffer);
   
//---- indicator line
   SetIndexStyle(0,DRAW_NONE);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexStyle(2,DRAW_NONE);
   SetIndexStyle(3,DRAW_NONE);
//----
//---- name for DataWindow and indicator subwindow label
   short_name="RSI("+IntegerToString(RSIPeriod,0,' ')+")";
   IndicatorShortName(short_name);
   SetIndexLabel(0,short_name);
   SetIndexLabel(1,"Levl"+"_"+IntegerToString(Levl,0,' ')+" Price");
   SetIndexLabel(2,"U");
   SetIndexLabel(3,"D");
   

   return(0);
  }

这是修改过的RSI--那里需要缓冲区,因为计算是基于过去的数据,我不想每次都改变缓冲区的大小(如果它不是图形化的),并在那里添加新的数据,所以图形化的缓冲区对我的目的很方便。

 
Alekseu Fedotov:
你不应该从Ask-40*Point开始跳舞,而是从开盘价1位置-40*Point开始。

因此,阅读开盘价 和舞蹈....

 
Aleksey Vyazmikin:

我没怎么用过指标,所以这可能是个简单的问题,我如何在数据窗口 中禁止显示图形缓冲区?我想删除缓冲区3和4,以下是代码。

这是一个修改过的RSI--那里需要缓冲区,因为计算是基于过去的数据,我不想每次都改变缓冲区的大小(如果它不是图形化的),并在那里添加新的数据,所以图形化的缓冲区对我的目的很方便。


我不知道我对你的理解是否正确。

像这样试试吧。#property indicator_buffers 2

#property strict
#property indicator_chart_window
#property indicator_buffers 2
#property  indicator_color1 Black
#property  indicator_color2 Yellow
 
Alexander Voronkov:

我不知道我的理解是否正确。

像这样试试吧。#property indicator_buffers 2


看来你是对的!而且出于善意,我认为如果使用图形缓冲器进行计算,就必须要声明。

谢谢!
 
Aleksey Vyazmikin: 如何禁止在数据窗口 中显示图形缓冲区?我想删除缓冲区3和4,以下是代码。

要禁用数据窗口中的显示,请执行以下操作

SetIndexLabel(2,NULL);  // Запрет в окно Данные буфера 3
SetIndexLabel(3,NULL);  // Запрет в окно Данные буфера 4
 
STARIJ:

要禁用数据窗口中的输出,请执行以下操作


谢谢你。此举是否可以看到禁止通过iCustom向窗口 输出的缓冲区?

 
Aleksey Vyazmikin: 谢谢你。此举可以让你在数据窗口 看到不允许输出的缓冲区,通过iCustom?

iCustom允许你只看到数据窗口 中的内容。该函数的倒数第二个参数正好是数据窗口 中可见的缓冲区的编号。

Просмотр и настройка графиков - Графики котировок, технический и фундаментальный анализ - Справка по MetaTrader 5
Просмотр и настройка графиков - Графики котировок, технический и фундаментальный анализ - Справка по MetaTrader 5
  • www.metatrader5.com
Графики в торговой платформе отображают изменение котировок финансовых инструментов во времени. Они необходимы для проведения технического анализа...
原因: