Jump to content

Welcome to the new Traders Laboratory! Please bear with us as we finish the migration over the next few days. If you find any issues, want to leave feedback, get in touch with us, or offer suggestions please post to the Support forum here.

  • Welcome Guests

    Welcome. You are currently viewing the forum as a guest which does not give you access to all the great features at Traders Laboratory such as interacting with members, access to all forums, downloading attachments, and eligibility to win free giveaways. Registration is fast, simple and absolutely free. Create a FREE Traders Laboratory account here.

Tams

Array (EasyLanguage)

Recommended Posts

No, I don't think that waht I want to build is a 3 dimensional array.

I'm trying to build a Volume profile so it's a 2 dimensional array.

First dimension unlimited and unknown is the range of each day (High of the day - Low of the day) * price scale (or tick scale as you want)

 

Second dimensional array the volume of each level price (unknown )

 

So the final array is an array of the 2 first arrays each one unlimited.

The final array I think is a 2 dimensional array.

 

 

...call it whatever you will, you should draw out the data dependencies on a grid... and see how each piece of data relate to each other.

 

 

Is it possible ???

 

 

don't know, never tried it.

 

if you write out your thoughts in a step-by-step pseudo code,

e.g. one action per-line, one-line per-action,

you might be able to work out the code logics.

Edited by Tams

Share this post


Link to post
Share on other sites
any 2 arrays that has a common or dependent element on another array is a 3-D array...

 

 

 

 

 

don't know, never tried it.

 

if you write out your thoughts in a step-by-step pseudo code,

e.g. one action per-line, one-line per-action,

you might be able to work out the code logics.

 

I'll try it and I write it here, so if you could help me in the step by step way maybe I'll make it faster and useful to anyone.

Maybe if I post my thoughts and my codes you or someone else could help me doing that and we can achieve a code on an indicator that many would like to have.

Thanks again for your time

CrazyNasdaq

Share this post


Link to post
Share on other sites
I'll try it and I write it here, so if you could help me in the step by step way maybe I'll make it faster and useful to anyone.

Maybe if I post my thoughts and my codes you or someone else could help me doing that and we can achieve a code on an indicator that many would like to have.

Thanks again for your time

CrazyNasdaq

 

 

before you start running, I would suggest you to learn to walk...

(I am famous for helping people to go from step 1 to step 2, but absolutely refuse to assist anyone to skip from step zero to step 3)

 

go through post #1 (which I know you haven't yet)...

and the tutorial in post #2,

then digest post #5

 

make a few exercises...

 

array is about data manipulation,

you have to be comfortable with a 2 dimensional array before you can work on a 3-D,

because a 3-D is exponentially more complex in structure and data tracking.

Share this post


Link to post
Share on other sites

CrazyNasdaq,

 

you do not need a 2 or 3d array for this. a programming friend of mine did this in Visual Basic and used a 1-dimensional dynamic array.

 

Here were the steps:

 

1) set up the basic array structure:

 

if 'this bar' is first bar of a new day (date>date[1]), clear out array and set counter variables to zero

 

if not a new day, then expand the existing array (the one created if the first if statement was true) to add new data, while preserving the existing array

 

I believe you do this using the EL syntax Array_SetMaxIndex(ArrayName, #Elements)

 

2) populate array. something like this:

 

barrange1 = ((high - Low) / 0.25)+1;

x=0

For Counter1 = 0 to barrange1

begin

bars1[x] = low +(0.25 * Counter1);

x=x+1

end;

 

note that the variable x is going to keep track of total elements in the array

 

the part I don't understand is how often you have to re-set the size of the array and/or preserve the array so it doesn't lose data elements within the array. the code I write invariably is out of bounds of the array or some syntax just isn't right. its damn hard to find supporting documentation on EL.

Share this post


Link to post
Share on other sites
CrazyNasdaq,

 

you do not need a 2 or 3d array for this. a programming friend of mine did this in Visual Basic and used a 1-dimensional dynamic array.

 

Here were the steps:

 

1) set up the basic array structure:

 

if 'this bar' is first bar of a new day (date>date[1]), clear out array and set counter variables to zero

 

if not a new day, then expand the existing array (the one created if the first if statement was true) to add new data, while preserving the existing array

 

I believe you do this using the EL syntax Array_SetMaxIndex(ArrayName, #Elements)

 

2) populate array. something like this:

 

barrange1 = ((high - Low) / 0.25)+1;

x=0

For Counter1 = 0 to barrange1

begin

bars1[x] = low +(0.25 * Counter1);

x=x+1

end;

 

note that the variable x is going to keep track of total elements in the array

 

the part I don't understand is how often you have to re-set the size of the array and/or preserve the array so it doesn't lose data elements within the array. the code I write invariably is out of bounds of the array or some syntax just isn't right. its damn hard to find supporting documentation on EL.

Thanks for the suggestion TAMS,

I've read again the posts in the first page and the tutorial (post #2).

Here is my way of doing it:

1) use a 1 tick chart with volume set to Trade volume and NOT tick count.

*************************************

2) identify the range of each day (past and real time) and reset it each new day:

 

if date > Date[1] then begin

OpenDay = open;

HighDay = High;

LowDay = low;

CloseDay = close;

end;

 

If Date = date[1] then begin

 

If high > HighDay then

HighDay = High;

If Low < LowDay then

LowDay = Low;

if time >= Sess1endtime then

CloseDay = close;

If time < Sess1endtime and lastbaronchart then

CloseDay = close;

end;

 

RangeDay = HighDay - LowDay;

**********************************************

3) Identify the numbers of rows for each price of the day range :

 

TickScale = minmove/priceScale;

NRows = RangeDay * (1/TickScale);

**********************************************

4) Define the Array (1d dinamic array) regards volume:

 

MyVol = iff(bartype < 2, Upticks + Downticks, volume);

Array: MATRXIVoL[](0);

 

iVolume = MyVol;

iPrice = AvgPrice;

 

if date > date[1] then begin

Array_SetMaxIndex(MATRIX, NRows); // resize the array each day

MATRIXVoL[iVolume] = 0; // rest to zero each day

END;

***********************************************

5) Populate the Array for the past days and for the real time day

 

if Date = Date[1] then begin

fro iPrice = 0 to (NRows-1) begin

MATRIXVoL[iVolume] = MyVol ;

END;

 

If AvgPrice = iPrice then begin

MATRIXVoL[iVolume] = MATRIXVoL[iVolume] + MyVol;

END;

************************************************

 

These are my steps, but as a newbie about arrays, I'm not so sure about step #5, specially the last part {if AvgPrice = iPrice then begin ......ecc.....}

 

Then an other problem is:

If this way is correct a functional, how can I draw the Volume profile ??

Thanks again TAMS for your patience and your time.

 

P.S.

I have some ideas about the plotting and using ADE about this Volume profile, but it would be better to talk about it in private and then posting the final work.

If You want TAMS, write me in PVT to my TL private account.

Edited by Crazynasdaq

Share this post


Link to post
Share on other sites

5) Populate the Array for the past days and for the real time day

 

if Date = Date[1] then begin

fro iPrice = 0 to (NRows-1) begin

MATRIXVoL[iVolume] = MyVol ;

END;

 

If AvgPrice = iPrice then begin

MATRIXVoL[iVolume] = MATRIXVoL[iVolume] + MyVol;

END;

************************************************

 

This step (#5) is surely incorrect......

 

"for iPrice = 0 to (NRows-1) begin....... " is not the right way

iPrice can't be = 0 at least it can be :

 

for iPrice = HighDay downto LowDay begin

MatrixVoL[iVolume] = MyVol;

END;

 

 

Or another way (I don't know if the syntax is correct):

 

for iPrice = HighDay downto (HighDay - TickScale)=LowDay begin

MatrixVoL[iVolume] = MyVol;

END;

 

This step is the most difficult !!!

Edited by Crazynasdaq

Share this post


Link to post
Share on other sites
This step (#5) is surely incorrect......

 

"for iPrice = 0 to (NRows-1) begin....... " is not the right way

iPrice can't be = 0 at least it can be :

 

for iPrice = HighDay downto LowDay begin

MatrixVoL[iVolume] = MyVol;

END;

 

 

Or another way (I don't know if the syntax is correct):

 

for iPrice = HighDay downto (HighDay - TickScale)=LowDay begin

MatrixVoL[iVolume] = MyVol;

END;

 

This step is the most difficult !!!

 

 

iPrice is the counter

 

the loop would only makes sense if you use the counter to cycle the instructions inside the loop.

 

e.g.

for iPrice = HighDay downto LowDay begin

MatrixVoL[iPrice] = MyVol(iPrice);

END;

 

 

 

p.s. I have not studied your code or logic, the above example is for LOOP illustration only, not a correction to your logics.

more on For loop can be found here:

FOR (EasyLanguage)

http://www.traderslaboratory.com/forums/f56/easylanguage-7074.html

Share this post


Link to post
Share on other sites
iPrice is the counter

 

the loop would only makes sense if you use the counter to cycle the instructions inside the loop.

 

e.g.

for iPrice = HighDay downto LowDay begin

MatrixVoL[iPrice] = MyVol(iPrice);

END;

 

 

 

p.s. I have not studied your code or logic, the above example is for LOOP illustration only, not a correction to your logics.

more on For loop can be found here:

FOR (EasyLanguage)

http://www.traderslaboratory.com/forums/f56/easylanguage-7074.html

 

Thanks again TAMS.

I'll correct my code and think again to it for a better way if it's wrong.

 

Thanks

Crazy

Share this post


Link to post
Share on other sites

In trading, using an array is critical to compare intrabar data. Indexes can be used to compare one bar to another bar:

 

For example:

 

(If Close > High[1] then Sell) If the current close is greater than the last bars high, then sell.

 

In comparison:

 

If High > High then Sell; If this bars high is greater than this bars high then sell. This statement will never be true. You can't compare the current high to itself on the same bar using the built in price functions.

 

If you want to compare the high of the current bar at one point in time, to the high of the current bar at another point in time, you can only do that with an array. For example, if you wanted to compare the high of the price bar when your indicator crossed a threshold, and then compare the high of the price bar when the indicator started in a new direction, and that all happened on the same price bar, you would need to store the value of the high of the bar when the indicator crossed the threshold, then capture the value of the high of the price bar when the indicator started moving the other direction, then retrieve those two values from the array in order to compare them.

Share this post


Link to post
Share on other sites

EasyLanguage now has Object Oriented Arrays. EL (EasyLanguage) calls the arrays VECTOR Arrays. Actually, EL OO has something called "Collections", which are a collection of data. There are 5 different types of Collections.

 

The answer to the traditional Array in EL OO is a VECTOR. But a VECTOR array can access a particular element in the array. Here are the methods that can be used in a VECTOR array.

 

Create Initializes a new instance of the Vector class.

At(indx) Accesses an element at the specified position in the collection.

Back Accesses the last element of the collection.

Clear Removes all elements from the collection.

Empty True if there are no elements in the collection, otherwise false.

Erase(indx) Removes an element at the specified position.

Erase(indx1,indx2) Removes the elements in the specified range of index positions.

Front Accesses the first element of the collection.

Insert(indx,obj) Adds an element (obj) before the specified index.

Insert(indx,count,obj) Adds an element (obj) repeatedly before the specified position with the given count.

Pop_back Removes the last element from the collection.

Push_back(obj) Adds a new element (obj) to the end of the collection.

 

This code creates two vector ARRAYs. The code inside the METHOD subroutine only runs when an order is updated. It is an Event Driven subroutine. The event is the order status changing, for example, the order goes from Sending to Sent, or Sent to Received, or from Received to Filled, or From Filled to Closed out. This Method subroutine keeps track of unfilled Buys and Sells.

 

var: Vector UnFilledSells( NULL ), UnFilledBuys( NULL );

method void OP1_Updated( elsystem.Object sender, tsdata.trading.OrderUpdatedEventArgs args ) 

var: int iCount, int TheState, int QtyUnfilled, int BuyOrSell,
		string OrdrNum, bool ItsInThere, int SellsCount, int BuysCount;

begin

Once Begin  // If the vector is created more than once, it deletes all the elements
UnFilledSells = new Vector;  // Create the new array.
UnFilledBuys = new Vector; 
End;

TheState = args.State; // Get the state of the current order
if OP1.Orders.Count > 0 then QtyUnfilled = OP1[0].LeftQuantity else QtyUnfilled = 0;
OrdrNum = args.OrderID;  // Get the order number of the order that was just updated

if StrLen(OrdrNum) > 0 then BuyOrSell = OP1[OrdrNum].Action else BuyOrSell = 0;  // Buy = 1 Sell = 2

//print(file("c:\VctrArry.txt"), "Prn1 ", "array lngth=", UnFilledSells.Count:0:0, "   |   Order Num=", OrdrNum, "   State=", TheState:0:0, "   |  Qty Entered=", QtyUnfilled:0:0, "   |   Time=", Formattime("hh:mm:ss", TradeTimeEx));

If UnFilledSells.empty() = False then  // If the array is NOT empty, get the count of how many records
	SellsCount = UnFilledSells.Count else SellsCount = 0;  // Get  how many records are in the array

If UnFilledBuys.empty() = False then  // If the array is NOT empty, get the count of how many records
	BuysCount = UnFilledBuys.Count else BuysCount = 0;  // Get  how many records are in the array

ItsInThere = False;

If SellsCount > 0 and BuyOrSell = 2 then begin
	For iCount = 0 to UnFilledSells.Count - 1 begin // Loop through all the orders in the array
		If UnFilledSells.at(iCount) astype string = OrdrNum then // Check if current order number is in the array
		ItsInThere = True;
	End;
End;

If BuysCount > 0 and BuyOrSell = 1 then begin
	For iCount = 0 to UnFilledBuys.Count - 1 begin // Loop through all the orders in the array
		If UnFilledBuys.at(iCount) astype string = OrdrNum then // Check if current order number is in the array
		ItsInThere = True;
	end;
End;

// If the array is empty, just add the order
If (TheState = 4 or TheState = 2) and SellsCount = 0 and BuyOrSell = 2 then begin
	// If it's a SELL order, and the array is empty, then add a new element to the SELL array
	UnFilledSells.insert(0, OrdrNum);  // If state is received, sent or sending and it's not in the array, add it
	UnfilledSellOrdrs = UnFilledSells.Count;
	//print(file("c:\VctrArry.txt"), "Prn2 ", "array lngth=", UnFilledSells.Count:0:0, "   |   Order Num=", OrdrNum, "   State=", TheState:0:0, "   |  Qty Entered=", QtyUnfilled:0:0, "   |   Time=", Formattime("hh:mm:ss", TradeTimeEx), Newline);
	Return; // If the order number needed to be added to the arry, then your done.  Quit here.
End;

If (TheState = 4 or TheState = 2) and BuysCount = 0 and BuyOrSell = 1 then begin
	UnFilledBuys.insert(0, OrdrNum);  // If state is received, sent or sending and it's not in the array, add it
	UnfilledBuyOrdrs = UnFilledBuys.Count;
	//print(file("c:\VctrArry.txt"), "Prn2 ", "array lngth=", UnFilledSells.Count:0:0, "   |   Order Num=", OrdrNum, "   State=", TheState:0:0, "   |  Qty Entered=", QtyUnfilled:0:0, "   |   Time=", Formattime("hh:mm:ss", TradeTimeEx), Newline);
	Return; // If the order number needed to be added to the arry, then your done.  Quit here.
End;	

If TheState <> 4 and TheState <> 2 and BuyOrSell = 2 and ItsInThere = True then begin // If order status is anything buy sent or received
	For iCount = 0 to UnFilledSells.Count - 1 begin // Loop through all the orders in the array
		If UnFilledSells.at(iCount) astype string = OrdrNum then begin // Check if current order number is in the array
			ItsInThere = True; // The order number was found in the array
		 	// If the order in the vector has any status but 4, then delete the record
			UnFilledSells.erase(iCount);  // If it's not a status of Received, then it's been filled, or canceled, etc
			UnfilledSellOrdrs = UnFilledSells.Count;
			Return;
		End;
	End;
End;

If TheState <> 4 and TheState <> 2 and BuyOrSell = 1 and ItsInThere = True then begin
	For iCount = 0 to UnFilledBuys.Count - 1 begin // Loop through all the orders in the array
		If UnFilledBuys.at(iCount) astype string = OrdrNum then begin // Check if current order number is in the array
			ItsInThere = True; // The order number was found in the array
		 	// If the order in the vector has any status but 4, then delete the record
			UnFilledBuys.erase(iCount);  // If it's not a status of Received, then it's been filled, or canceled, etc
			UnfilledBuyOrdrs = UnFilledBuys.Count;
			Return;
		End;
	End;
End;

If (TheState = 4 or TheState = 2) and BuyOrSell = 2 and ItsInThere = False then begin // if the order number is not in the array
	UnFilledSells.insert(0, OrdrNum);  // If state is received or sending and it's not in the array, add it
	UnfilledSellOrdrs = UnFilledSells.Count;
	//print(file("c:\VctrArry.txt"), "Prn4 ", "array lngth=", UnFilledSells.Count:0:0, "   |   Order Num=", OrdrNum, "   State=", TheState:0:0, "   |  Qty Entered=", QtyUnfilled:0:0, "   |   Time=", Formattime("hh:mm:ss", TradeTimeEx), Newline);
	Return;  // Return is not needed in a VOID method, but useful to control when the execution is stopped.
End;

if (TheState = 4 or TheState = 2) and BuyOrSell = 1 and ItsInThere = False then begin
	UnFilledBuys.insert(0, OrdrNum);  // If state is received or sending and it's not in the array, add it
	UnfilledBuyOrdrs = UnFilledBuys.Count;
	//print(file("c:\VctrArry.txt"), "Prn4 ", "array lngth=", UnFilledSells.Count:0:0, "   |   Order Num=", OrdrNum, "   State=", TheState:0:0, "   |  Qty Entered=", QtyUnfilled:0:0, "   |   Time=", Formattime("hh:mm:ss", TradeTimeEx), Newline);
	Return;  // Return is not needed in a VOID method, but useful to control when the execution is stopped.
End;

End;

Share this post


Link to post
Share on other sites

If you want to compare the high of the current bar at one point in time, to the high of the current bar at another point in time, you can only do that with an array. For example, if you wanted to compare the high of the price bar when your indicator crossed a threshold, and then compare the high of the price bar when the indicator started in a new direction, and that all happened on the same price bar, you would need to store the value of the high of the bar when the indicator crossed the threshold, then capture the value of the high of the price bar when the indicator started moving the other direction, then retrieve those two values from the array in order to compare them.

 

COuld code this example by normal easylanguage and not OOO.

Share this post


Link to post
Share on other sites
COuld code this example by normal easylanguage and not OOO.

 

Regular EL also has an array. I have not used the regular array. There is probably multiple ways to compare intrabar values to each other. The time could be recorded and compared.

EL has something called 'intrabarpersist'. I find it confusing and a pain. Intrabarpersist variables will hold intrabar values differently than regular variables.

 

Do you have an example of how to do this with regular easylanguage?

 

Unfortunately I can't edit my post that you are referring to. I'd change the wording, but I can't now. I stated that there was only one way to do something, but I'm sure that isn't true.

Share this post


Link to post
Share on other sites

Tradewinds,

 

So is a vector available to different windows such that an indicator's vector values are also available to a strategy? Or is this dependent on making the values of the method global dictionary values?

Thanks,

TBB

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Topics

  • Posts

    • Method of analysis: Locked-in Range Analysis Period: 10 January - 15 January Currency futures: Euro FX, Japanese Yen, British Pound, Australian Dollar, Canadian Dollar, Swiss Franc, New Zealand Dollar * A maximum potential profit of the Gravitation Locked-in Range
    • re our ‘money’ Howard Wang
    • Date : 13th January 2021. FX Update – January 13 – USD & Yields stall their run, Politics swirls. FX News Today USD reversed its 5 day run as Yields stalled too. House vote tonight to impeach President Trump, (YouTube have banned him for 7 days), Pence will not initiate the 25th Amendment to remove him. The symbolism is significant, no President has ever been impeached twice. Equities flat too (UBER +7.24%,TSLA +4.72%, FB -2.24%, GooGL & NFLX -1.00%) Asian markets also flat. GBP rallied after Bailey pushed back on Negative Interest Rates. Oil rallied over 1% after surprise inventory drawdowns peaked at $53.90, AUD pegged by possible RBA “push back” to strong AUD. Gold recovered $1850.China reported its largest daily new COVID-19 cases in 5 months.USDIndex – Back under 90.00 from rejection of 90.50 yesterday. Trades at 89.95 just over S3 – PP 90.40 – S3 89.90, S2 90.07EUR – Recovered back over 1.2200 (R2) – Trades at 1.2215 now– PP – 1.2157. R3 1.2225 –JPY – Reverses under 104.000 – after rejection 104.50 on Monday. – Trades at 103.68 (200hr MA). – PP 103.90, S1 103.55GBP – Big rally – spurred by USD weakness and Governor Bailey pushing back on Negative Interest Rates. Breached 1.3600 after multiple attempts – rallied to 1.3690 – PP 1.3585, R1 1.3668, R2 1.3715AUD – Over 0.7700 yesterday to test 0.7770 (R2) now. R1 0.7748 – NZD – Over 0.7200 yesterday to test 0.7240 (R3) now. r2 0.7215 CAD – back to test 1.2700 (S2) today as Oil rises – S1 1.2725, S3 1.2664 from Friday CHF – Trades back to 0.8850 (200hrMA) and under S3 (0.8865)- PP 0.8900 BTC – Back to around $34,600. – PP today 34,500, r1 36,600, s1 32,800GOLD – Recovers over 1850 (PP) – Trades at 1860 (R1) – R2 1875, PP 1840 USOil – New 11-mth high $53.90 (R2) after surprise drawdown in private inventories (EIA data later). R3 $54.70, r1 53.55.USA500 – Closed up 1.5 (+0.04%) 3800 – USA500 FUTS now at 3808. 48 days north of 20SMA (3740).Today – EZ industrial production, US CPI, ECB’s Lagarde, Fed’s Bullard, Brainard, Harker, Clarida Biggest (FX) Mover @ (07:30 GMT) GBPAUD (+0.23%) 5th day higher – Bounced from 200MA on open, testing 1.7625 now, key resistance 1.7650. Fast MAs aligned and trending higher, RSI 59 and rising, MACD histogram & signal line aligned higher and north of 0 line from Monday open, Stochastics rising to OB. H1 ATR 0.023, Daily ATR 0.0125.Always trade with strict risk management. Your capital is the single most important aspect of your trading business. Please note that times displayed based on local time zone and are from time of writing this report.Click HERE to access the full HotForex Economic calendar.Want to learn to trade and analyse the markets? Join our webinars and get analysis and trading ideas combined with better understanding on how markets work. Click HERE to register for FREE!Click HERE to READ more Market news. Stuart Cowell Head Market Analyst HotForex Disclaimer: This material is provided as a general marketing communication for information purposes only and does not constitute an independent investment research. Nothing in this communication contains, or should be considered as containing, an investment advice or an investment recommendation or a solicitation for the purpose of buying or selling of any financial instrument. All information provided is gathered from reputable sources and any information containing an indication of past performance is not a guarantee or reliable indicator of future performance. Users acknowledge that any investment in FX and CFDs products is characterized by a certain degree of uncertainty and that any investment of this nature involves a high level of risk for which the users are solely responsible and liable. We assume no liability for any loss arising from any investment made based on the information provided in this communication. This communication must not be reproduced or further distributed without our prior written permission.
    • XRPUSD Is Ranging Within $0.28 and $0.21 Levels, Awaiting a Breakout XRP/USD Market January 06 An increase in the bears’ pressure may penetrate the $0.21 level; the price may decrease further to $0.17 and $0.10. In case the support level of $0.21 holds, the price may reverse and the resistance levels of $0.28, $0.39, and $0.49 may be tested. Key Levels: Resistance levels: $0.28, $0.39, $0.49 Support levels: $0.21, $0.17, $0.10 XRP/USD Long-term Trend: Ranging XRPUSD is on the ranging mode in the daily chart. The coin is range-bound within the resistance level of $0.28 and the support level of $0.21.  XRPUSD started the ranging movement on December 30. The bears made an attempt to break down the support level of $0.21 failed due to low bearish momentum. Today, the bears try to penetrate the resistance level of $0.28 but the level holds and the price could not break it up. Ranging movement will continue until there is a breakout. XRPUSD Daily chart, January 06 XRPUSD is struggling to breakout at the two key levels but the levels hold the price. An increase in the bears’ pressure may penetrate the $0.21 level; the price may decrease further to $0.17 and $0.10. In case the support level of $0.21 holds, the price may reverse and the resistance levels of $0.28, $0.39, and $0.49 may be tested. However, the price retains its trading below 9 periods EMA and the 21 periods EMA, the former is below the later. The relative strength index period 14 is at 25 levels bending up to indicate a buy signal. XRP/USD Medium-term Trend: Ranging On the medium-term outlook, XRPUSD remains in the ranging mode. The bears’ momentum and the bulls’ momentum are at equilibrium within the $0.28 and $0.21 levels. The support level of $0.21 is resisting the bears. The bears lose their momentum and the bulls’ pressure is equally weak. The price results in consolidation within $0.28 and $0.21 price levels. XRPUSD 4 hour chart, January 06 The fast-moving average is interlocked with the slow-moving average. The price is hovering over the 9 periods EMA and 21 periods EMA which indicates that consolidation is ongoing. However, the relative strength index period 14 is bending up at 60 levels to indicate a buy signal.   Source: https://learn2.trade                   
    • Litecoin (LTC) Resumes Upward Move as Bulls Buy the Dips Key Highlights Litecoin slumps to $121 low and resumes upward The altcoin will further decline to $73 if the support at $120 cracks Litecoin (LTC) Current Statistics The current price: $144.63 Market Capitalization: $9,613,048,370 Trading Volume: $12,189,426,086 Major supply zones: $120, $140, $160 Major demand zones: $90, $70, $50 Litecoin (LTC) Price Analysis January 12, 2021 Litecoin has fallen to $120 low as the coin resumed its upward move. The crypto has fallen into the previous range bound zone of $120 and $140. LTC will retest the $180 resistance if the bulls clear the $140 and $170 minor resistance levels. On January 10, Litecoin was repelled as the bulls attempt to break the $180 resistance level. Meanwhile, the crypto has resumed upside momentum as the market reaches the high of $146. LTC/USD – Daily Chart Litecoin (LTC) Technical Indicators Reading After the breakdown, the LTC price broke above the SMAs which suggested an upward movement of the coin. The crypto is at level 51 of the Relative Strength Index period 14. It indicates that there is a balance between supply and demand. LTC/USD – 4 Hour Chart Conclusion Litecoin has fallen to $120 low as the current support holds. This has propelled the price to rise on the upside. However, if the $120 support fails to hold, the Fibonacci tool price prediction will hold. On January 11 downtrend; a retraced candle body tested the 61.8%Fibonacci retracement level. The retracement indicates that the crypto will reach level 1.618 Fibonacci extensions or the high of $67.40.     Source: https://learn2.trade                   
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.